2012-10-10 17 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のルートディレクトリを設定することができますをご覧ください。デフォルトは/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があります。新しいフォルダにコピーし、より多くの設定についてクライアント

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

から正しいパスでそれを呼び出すwiki

+0

これは私のために働いただけのものでした。静的な.htmlページとはまったく異なるディレクトリにnode.jsのものがあります。 – erapert

+3

ダウン投票はしませんが、これは間違った方法です。メンテナンスとアップグレード(次の人または将来の人のために)が難しくなってきました。このタイプのことを考えている他の人にとっては親切な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'}); 

クライアント側:FYI

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

http://socket.io/docs/migrating-from-0-9/#configuration-differences

+0

これを変更しましたが、コンソールログにGETコールが過剰に表示されています。 – Josh

関連する問題