使用socket.io进行socket.emit()错误处理

时间:2017-02-17 06:53:03

标签: javascript node.js sockets websocket socket.io

我正在使用

$('btn').click(function() {
    socket.emit('load more', function (objs) {
        // do something
    });
});

在客户端上从服务器获取对象。

但有时连接丢失且没有任何反应。如何进行错误处理,以便我可以告诉用户服务器没有回答而不是让现在没有任何事情发生?

修改

所以我想要的是像

$('btn').click(function() {
    var emit = socket.emit('load more', function (objs) {
        // do something
    });

    if (!emit) {
        console.log("It didn't work. Maybe you lost connection or the server is not running.");
    }
});

我知道我不能这样做,但可以使用承诺或其他东西吗?

1 个答案:

答案 0 :(得分:1)

emit的第二个参数是我们需要传递事件'load more'的数据。

如果您只想让服务器知道您需要数据,而不传递任何额外信息,请执行socket.emit('load more')。在服务器中,侦听事件'load more'并将数据发送到具有特定event-name的客户端。在客户端中,侦听事件'event-name'并在回调中接收数据,如

socket.on('event-name', function(data_from_server){
    //do something
});

如果你想处理这种情况,服务器不发送任何数据,那么在发送事件'load mode'后等待一段时间并处理它。