在socket.io的博客中说,在版本1.2.1中
“README fixes to prevent double events in the example upon reconnection [@nkzawa]”
我下载了1.2.1版本的客户端&服务器,但重新连接后仍然会调用两次事件.
或者我应该用自述文件做些什么?
我尝试这种方式重新连接并且它可以工作,但是我可以将它用于生产.这是否严格?
socket.disconnect() // remove socket object socket = undefined // connect again socket = io.connect({'forceNew':true})
正如我所说的那样是正确的还是有缺点?
服务器端代码
socket.on('client_emited',function(data){ socketIO.to('this socket id').emit('server_emitted'); })
客户端代码
var socket; function connectSocket () { if (!socket) socket = io({'forceNew':true}); else socket.connect(); } socket.on('connect',function(){ console.log('CONNECTED TO SOCKET.IO SERVER. SENDING "client_emited" EVENT'); socket.emit('client_emited'); }); socket.on('server_emited',function(){ console.log('RECEIVED "server_emited" EVENT'); }); socket.connect(); // here console shows 'CONNECTED TO SOCK...' and 'RECEIVED "server_e...' 1 time socket.disconnect(); socket.connect(); // here console shows 'CONNECTED TO SOCK...' 2 times and 'RECEIVED "server_e...' 4 times time
并且服务器接收“client_emit”事件两次
解决方法
解决方案是:
socket.on('connect',function(){....});
改成
socket.once('connect',function(){....});
有关更多信息,请阅读issue on github
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。