socket.io客户端连接不能在第二次进行
目前,我正在使用nodejs express实现一个API,然后它需要连接到socket.io并发送事件。
API位于socket.io-client(客户端),并连接到socket.io(服务器)
第一个API调用: 成功
连接用于API的第一个调用,发送消息并且可以断开套接字,在客户端和服务器端都调用“disconnect”callback。
第二个API调用: 失败
当第二次调用API时,无法连接到服务器,客户端的“客户端”callback没有被调用。
第三个API调用: 成功
然后我试着重新启动客户端,保持其他东西不变。 API被再次调用,并成功连接到socket.io,一切都很好。
任何人都可以解释这背后的物stream?
更新
client.js
App.getByUserId(message.to_id, function(error, app) { var socket = io.connect('http://127.0.0.1:9002'); socket.on('connect', function(){ console.log("client connect socket id:" + socket.id); console.log("appkey:" + app.private_token); socket.emit('appkey.check',{appkey: app.private_token, uuid: message.to_id.uuid}, function(data){ socket.emit("forceDisconnect"); socket = null; }); });
根据你的看法,你只是碰到了Socket.IO的许多“function”或“错误”。 Socket.IO试图变得聪明并且重新使用连接(这实际上导致了很多连接问题)解决方法是在io.connect
使用force new connection
选项:
io.connect('http://127.0.0.1:9002', { 'force new connection': true });
如果你使用socket.io变换器,你也可以使用https://github.com/primus/primus来封装Socket.IO。 在内部,它完全消除了io.connect
的使用,并使用更低层次的io.Socket
构造函数来创build更稳定的连接,您将使用io.Socket
获得更多的连接。