如何检查通过 socket.io 库发送的消息是否已接收到客户端。在socket.io中有特殊的方法吗?
感谢您的回答!
定义事件处理程序时,应使用callback参数。
一个典型的实现如下:
客户端
var socket = io.connect('http://localhost'); socket.emit('set', 'is_it_ok', function (response) { console.log(response); });
服务器端
io.sockets.on('connection', function (socket) { socket.on('set', function (status, callback) { console.log(status); callback('ok'); }); });
现在,检查服务器端的控制台。它应该显示“ is_it_ok”。接下来在客户端检查控制台。它应该显示“确定”。那就是确认信息。
一个socket.io连接本质上是持久的。以下内置函数可让您根据连接状态采取措施。
socket.on('disconnect', function() {} ); // wait for reconnect socket.on('reconnect', function() {} ); // connection restored socket.on('reconnecting', function(nextRetry) {} ); //trying to reconnect socket.on('reconnect_failed', function() { console.log("Reconnect failed"); });
使用上面显示的回调选项实际上是以下两个步骤的组合:
socket.emit('callback', 'ok') // happens immediately
在客户端
socket.on('callback', function(data) { console.log(data); });
因此,您无需使用计时器。回调将立即运行,除非连接具有以下任何状态-“断开连接”,“正在重新连接”,“重新连接失败”。