web-dev-qa-db-ja.com

socket.ioクライアントは2つの異なるサーバー/ポートに接続できますか?

Socket.ioクライアントは同じサーバー上の2つの異なるポートに接続できますか?

Socket.ioクライアントは2つの異なるサーバーに接続できますか?

16
user815070

Socket.ioクライアントは同じサーバー上の2つの異なるポートに接続できますか?

両方のマシンが同じドメインを共有していると思います。クッキーを渡す場合でも、ロングポーリング(WebSocket、FlashSocketなども機能します)を使用できると思います。しかし、Internet Explorerでこれをテストする必要があります。なぜなら、そのブラウザーは私が望むことを決して実行しないからです...

Socket.ioクライアントは2つの異なるサーバーに接続できますか?

大きな問題は、これらの両方のマシンが異なるドメインにあるかどうかです。同じドメイン上にある場合は、Cookieを渡しても問題なく機能します。それらが異なるドメインにある場合、一部のブラウザーではjson-pトランスポート(考えられる最悪のトランスポート)にフォールバックしますが、機能します。残念ながら、同一生成元ポリシーのため、Cookieは渡されません。今、私はこのクッキーの制限を回避しようとしています(難しい問題)...

9
Alfred

確かに:

var io1 = require('socket.io').listen(8001);

io1.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
});


var io2 = require('socket.io').listen(8002);

io2.sockets.on('connection', function (socket) {
  socket.emit('flash', { hello: 'world' });
});

おそらくこれは興味深い読み物です:(from github

// connect at the same Host / port as your website
var socket = io.connect();

// different port or Host
var socket = io.connect('http://url.com');

// secure
var socket = io.connect('https://localhost');
23
Kriem