【发布时间】:2013-11-21 02:37:13
【问题描述】:
我正在尝试断开客户端的连接,然后重新连接。
我可以使用 socket.disconnect(); 断开客户端与服务器端的连接
但我无法再次连接它,有什么办法吗?
问题是我在客户端connect callback 中进行了特定处理,如果我在断开连接事件后尝试连接客户端,它永远不会触发回调,我不明白为什么。
这是一个明显的例子:
客户
var Socket = io.connect('http://127.0.0.1:3000');
function bind_socket(Socket) {
Socket.on('connect', function() {
console.log('Socket connected !');
});
Socket.on('event', function(data) {
console.log('Receive event: '+data);
});
Socket.on('disconnect', function() {
console.log('Socket disconnected !');
var Socket = io.connect('http://127.0.0.1:3000'); //Doesn't fire the "connect" callback
bind_socket(Socket);
Socket.emit('event', 3);
});
}
bind_socket(Socket);
Socket.emit('event', 1);
服务器
var io = require('socket.io').listen(3000);
io.on('connection', function(socket) {
console.log('socket '+socket.id+' connect');
socket.on('event', function(data) {
console.log('Receive Event: '+data);
socket.disconnect();
this.emit('event', 2);
});
socket.on('disconnect', function() {
console.log('socket '+this.id+' disconnect');
});
});
【问题讨论】:
-
实际上我用了几个月的 socket.io ..在开发中它工作得很好但是在生产中你会遇到很多关于 CPU 和内存的问题 ..切换到 sockjs 会更好
-
是的,我希望 v1.0 能尽快推出(我一直这么说已经超过 6 个月了……)。我将 socket.io 用于其
rooms服务,在 sockjs 上似乎不存在,但我同意它可能是一个更好的选择,因为socket.io看起来被遗弃了...... -
这里也一样...我正在等待 1.0 版,但是如果您在他们的 github 页面上查看活动 ..有超过 500 个未解决的问题 ..sockjs 更好但功能更少
标签: socket.io