こんにちは。今日はSocket.ioを使っていて、コネクションを複数貼らなくてはいけないことが出てきてた際の対処法です。
非常にこれは単純です。
io.connectやioメソッドでクライアントからconnectionをすると思いますが、ここであるオプションを指定することで対応可能です。
var socket = io('localhost:3000', {forceNew: true});
これだけです。
一応forceNewだけでなく、'force new connection':true
でも問題ありません。
詳しいソースはsocket.io.jsのlookupメソッドを確認すると良いでしょう。
一部抜粋
if (opts.forceNew || opts['force new connection'] || false === opts.multiplex) {
debug('ignoring socket cache for %s', source);
io = Manager(source, opts);
} else {
if (!cache[id]) {
debug('new io instance for %s', source);
cache[id] = Manager(source, opts);
}
io = cache[id];
}
恐らく、multiplexをtrueにしても問題ないはず。検証してないです。
対象のオプションを指定していない場合はキャッシュに存在する場合はキャッシュのコネクションを利用するので複数コネクションが貼れないわけですね。
ではでは〜。