2012-10-10 2 views
15

기본 HTTP 서버 (Express 또는 Connect 또는 이와 유사한 서버가없는 노드 서버)에서 Socket.IO를 사용하고 있습니다. 기본적으로 Socket.IO는Socket.IO 정적 파일 제공 경로 변경

/socket.io/socket.io.js

에 클라이언트 파일을 제공
내가

처럼 다른 것으로 그 기본 경로를 변경할 수 있도록하고 싶습니다

/foo/bar/socket.io/socket.io.js

이 작업을 수행 할 수있는 기본 방법, 또는 Socket.IO의 코드를 변경하지 않고 어떤 방법이 있나요

? 그 대답은 Static 모듈 ( require('socket.io').Static))에 있지만, 내 자신의 쓰기를 기본 설정을 대체하는 것이 아니라고 생각합니다, 나는 가서 그 행동 방식을 바꿀 방법이 없습니다.

어떻게하면됩니까?

답변

21

resource option 당신이 socket.io의 루트 디렉토리를 구성 할 수 있습니다 더 많은 구성 방문을 위해 클라이언트

<script src="/your/path/to/socket.io.js"></script> 

에서 올바른 경로를 호출합니다. 기본값은 /socket.io입니다. socket.io의 엔드 포인트 당신은 또한 당신의 클라이언트 코드에서이 설정을 변경해야합니다 그래서 에서 제공되는 곳

var io = require('socket.io').listen(app, { resource: '/foo/bar/socket.io' }); 

참고이 설정은 영향을.

var socket = io.connect('http://example.com', { resource: 'foo/bar/socket.io' }); 

(우리는 어떤 이유로 여기에 선도적 인 슬래시를 사용하지 마십시오.)

+2

여기에있는 사람들에게 이것은 1.0 이전 버전을위한 것입니다. 1.0 이후에는 [this] (http://stackoverflow.com/a/25438603/400654) 대답을 참조하십시오. –

2

경로 node_modules/socket.io/node_modules/socket.io-client/dist에 클라이언트 측 스크립트 socket.io.js이 있습니다. 새 폴더에 복사하고 wiki

+0

http://socket.io/docs/migrating-from-0-9/#configuration-differences은 나를 위해 일한 유일한 일이었다. static.html 페이지와 완전히 다른 디렉토리에 node.js 파일이 있습니다. – erapert

+3

downvoting하지 않지만이 방법은 잘못되었습니다.유지 보수 및 업그레이드 (다음 사람 또는 미래의 사람을 위해) 어려움이 증가했습니다. 이런 유형의 것을 생각하는 다른 사람들을위한 친숙한 BTW는 좋은 생각입니다.이 개념은 모든 플러그인과 확장에 적용됩니다. 두통은 나중에 많은 것을 저장할 것입니다. – Ben

9

당신이 socket.io 버전 1.0를 사용하는 경우, 구성은 이전 버전과 다릅니다. 클라이언트 측에 대한

:

var socket = io.connect('http://localhost:8888', { path: '/some/path/socket.io' }); 

서버 측

var socket = require("socket.io")({ resource: '/some/path/socket.io' }); 
12

를 들어 socket.io 버전 1.2.1를 들어, 이것은 나를 위해 작동합니다.

서버 측 :

var io = require('socket.io')({path: '/foo/bar'}); 

클라이언트 측 : 참고로

var socket = io.connect('http://example.com', {path: '/foo/bar'}); 

는 :

+0

이걸 변경했는데 콘솔 로그에 과도한 GET 호출이 표시됩니다. – Josh