正确捕获错误Socket.io

时间:2014-12-08 14:12:33

标签: javascript websocket socket.io

我正在建立一个简单的聊天。 我正在使用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

1 个答案:

答案 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