San*_* Lu 8 node.js express socket.io
目前,我正在使用nodejs express实现API,然后需要连接到socket.io并发送事件.
API位于socket.io-client(客户端)中,并连接到socket.io(服务器)
连接是为API的第一次调用,发送消息并且可以断开套接字,在客户端和服务器端都调用'disconnect'回调.
当第二次调用API时,无法建立与服务器的连接,不调用客户端的"客户端"回调.
然后我尝试重新启动客户端,保持其他内容不变.再次调用API,并成功连接到socket.io,一切正常.
任何人都可以解释这背后的物流吗?
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;
});
});
Run Code Online (Sandbox Code Playgroud)
3rd*_*den 11
根据你的看法,你只需点击一个Socket.IO的许多"功能"或"错误".Socket.IO试图变得聪明并重新使用连接(实际上会导致很多连接问题)解决这个问题的方法是使用以下force new connection
选项io.connect
:
io.connect('http://127.0.0.1:9002', { 'force new connection': true });
您还可以使用https://github.com/primus/primus,如果您使用socket.io转换器,它将包装Socket.IO.在内部,它完全删除了使用它,io.connect
并使用更低级别的io.Socket
构造函数来创建更稳定的连接,这将通过stock socket.io获得.
归档时间: |
|
查看次数: |
5620 次 |
最近记录: |