我正在建立一个简单的聊天。 我正在使用websocket lib socket.io,因为它有一个很好的服务器/客户端实现。
我的客户端是移动设备,因此网络连接非常不稳定。 我已经阅读了一些关于确认函数的内容,这些函数可以通过emit传递,一旦套接字“事务”完成就执行代码。但是在此基础上构建错误处理将是非常糟糕的。
我还读到了.on('错误'实现可以捕获错误。
这里的问题是:如何在不成功发送的消息(.emit)和暂时丢失的socketconnection之间进行分隔。我不关心丢失socketconnection,因为我把它设置为一旦丢失就重新连接。
我希望我的情况得到澄清。提前谢谢。
编辑:
我在寻找的是客户端上的类似内容:
socket.on('error', function(data){
alert(data.emitData.msg+' could not be sent: '+data.emitID);
});
我将在此期间开始仔细研究API
答案 0 :(得分:2)
消息确认已涵盖here in the socket.io docs。这是该文档的相关部分:
有时,您可能希望在客户确认时收到回电 消息接收。
要执行此操作,只需将函数作为.send或的最后一个参数传递 。发射。更重要的是,当你使用.emit时,确认是通过 你,这意味着你也可以传递数据:
服务器(app.js)
var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.on('ferret', function (name, fn) { fn('woot'); }); });
客户端(index.html)
<script> var socket = io(); // TIP: io() with no args does auto-discovery socket.on('connect', function () { // TIP: you can avoid listening on `connect` and listen on events directly too! socket.emit('ferret', 'tobi', function (data) { console.log(data); // data will be 'woot' }); }); </script>
此处显示的另一个示例:Acknowledgment for socket.io custom event