2014-09-17 1 views
11

경로가 내 node.js 서버에만있는 프록시를 실행하고 있습니다 /mysubdir 이 상황에 맞게 socket.io를 어떻게 구성합니까?하위 디렉토리에 대해 socket.io를 실행하려면 어떻게해야합니까

var socket = io.connect('http://www.example.com/mysubdir'); 

을하지만 나는 그들을 공격 할 기본 socket.io가 (또는 engine.io) HTTP 요청

http://www.example.com/socket.io/?EIO=3&transport=polling&t=1410972713498-72` 

타격하는 것을 알 : 내 클라이언트 코드에서

나는 시도

http://www.example.com/mysubdir/socket.io..... 

클라이언트와 서버에 구성해야 할 것이 있습니까?

답변

14

내 서버에서 나는

<script src="http://www.example.com/mysubdir/socket.io/socket.io.js"></script> 

로했다 나의 클라이언트에서

var io = require('socket.io')(httpServer, {path: '/mysubdir/socket.io'})` 

로했다 또한

var socket = io.connect('http://www.example.com', {path: "/mysubdir/socket.io"});` 
+3

var io = require ('socket.io') (http, {경로 : '/mysubdir/socket.io'}) - 나를 위해 일했습니다. – reabow

1

@Drew-LeSueur에 의한 대답은> socket.io에 대한 올바른 = 1.0이다.

socket.io 0.9를 사용하면서 문서에 the old way of doing it이 있습니다. / 새로운 path 옵션의 첫 번째 문자로 나타납니다

// in 0.9 
var socket = io.connect('localhost:3000', { 
    'resource': 'path/to/socket.io'; 
}); 

// in 1.0 
var socket = io.connect('localhost:3000', { 
    'path': '/path/to/socket.io'; 
}); 

알 수 있습니다.

2

제 경우에는 리버스 프록시로 nginx를 사용하고 있습니다. 폴링 할 때 404 오류가 발생했습니다. 이것이 나를위한 해결책이었습니다.

노드 서버에 대한 URL을 내가

socket = io.connect('https://example.com/subdir/', { 
    path: "/subdir" 
}); 

건배를 사용하는 HTML에서

var io = require('socket.io')(http, {path: '/subdir/socket.io'}); 

와 IO 서버 인스턴스를 생성 app.js에서 https://example.com/subdir/

,
입니다 루크.

관련 문제