我创建了一些按钮来连接和断开我的命名空间:
<div id="message">no message</div>
<button id="disNamespace1" type="button"> Disconnect from namespace1</button>
<button id="disNamespace2" type="button"> Disconnect from namespace2</button>
<button id="conNamespace1" type="button"> connection to namespace1</button>
<button id="conNamespace2" type="button"> connection to namespace2</button>
我正在处理这样的按钮:
$('#conNamespace1').click(function(ev){
mySocket = io.connect('http://localhost:1337/namespace1');
mySocket.on("msg:from:namspace1", function(msg){
$('#message').text(msg);
});
});
$('#conNamespace2').click(function(ev){
mySocket = io.connect('http://localhost:1337/namespace2');
mySocket.on("msg:from:namspace2", function(msg){
$('#message').text(msg);
});
});
$('#disNamespace1').click(function(ev){
console.log('trying disconnect');
io.sockets['http://localhost:1337'].disconnect();
});
$('#disNamespace2').click(function(ev){
io.sockets['http://localhost:1337'].disconnect();
});
我的服务器:
socketNamespace1 = io.of('/namespace1');
socketNamespace2 = io.of('/namespace2');
socketNamespace1.on('connection', function(mySocket){
console.log('namespace1: new user ');
mySocket.emit('msg:from:namspace1', 'msg:from:namspace1');
mySocket.on('disconnect', function(){
console.log('disconnecting from namespace1');
});
});
socketNamespace2.on('connection', function(mySocket){
console.log('namespace2: new user ');
mySocket.emit('msg:from:namspace2', 'msg:from:namspace2');
mySocket.on('disconnect', function(){
console.log('disconnecting from namespace2');
});
});
我的第一次连接和断开工作很好,但是当第二次点击连接按钮时,它确实可以运行任何时间。有什么问题?
答案 0 :(得分:0)
试试这个:
mySocket = io.connect('http://localhost:1337/namespace1', {'force new connection': true});
来自socket.io docs:
调用时,会为给定的网址创建新的经理,然后尝试 重新使用现有的Manager进行后续调用,除非 多路复用选项与false一起传递。通过此选项是相当于传递强制新连接&#39;:真实。
所以也许socket.io会对你的第二个&#34; socket.connect()&#34;随后的电话......