正确捕获错误 Socket.io

Correctly capture an error Socket.io

本文关键字:Socket io 错误      更新时间:2023-09-26

我正在建立一个简单的聊天。我正在使用 websocket lib socket.io 因为它有一个很棒的服务器/客户端实现。

我的客户端在移动设备上,因此网络连接非常不稳定。我已经读过一些关于确认函数的信息,这些函数可以通过发出传递,以便在套接字"事务"完成后执行代码。但是在此基础上构建错误处理将非常丑陋。

我还阅读了有关捕获错误的.on('error'实现)的信息。

这里的问题是:如何区分不成功的发送消息 (.emit) 和暂时丢失的套接字连接。我不在乎失去套接字连接,因为我将其设置为在丢失后重新连接。

我希望我的情况清楚了。提前谢谢。

编辑:

我在客户端寻找的是这样的东西:

socket.on('error', function(data){
   alert(data.emitData.msg+' could not be sent: '+data.emitID);
});

与此同时,我将开始自己仔细研究 API

消息确认在 socket.io 文档中进行了介绍。 以下是该文档的相关部分:

有时,您可能希望在客户端确认时收到回调 消息接收。

为此,只需传递一个函数作为 .send 的最后一个参数或 。发出。更重要的是,当您使用 .emit 时,确认由 您,这意味着您还可以传递数据:

服务器(应用程序.js)

var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
  socket.on('ferret', function (name, fn) {
    fn('woot');
  });
});

客户端(索引.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>

以及此处显示的另一个示例:自定义事件的确认 socket.io