在Socket.IO中,'heartbeat'是一个可以用来触发其他动作的事件吗?

Kyl*_*ris 9 heartbeat websocket node.js socket.io

这个确切的代码不起作用,但是,我希望它是这样的:

io.sockets.on('connection', function(socket) {
    socket.on('heartbeat', function() {
        // Do something here...
    });
});
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?我的意思是,我知道我可以创建一个不同的函数,使用setInterval触发每个,比如15秒:

io.sockets.on('connection', function(socket) {
    setInterval(function() {
        // Do something
    },15000);
});
Run Code Online (Sandbox Code Playgroud)

但由于心跳已经在这个间隔运行,为什么不利用它呢?

无论如何,我们将非常感谢任何见解.

小智 9

我想我明白你在做什么.您可以在这里查看一些暴露事件 - Socket.io事件列表 - 但是没有"心跳"事件可以在设定的时间间隔内触发.

你在第二段代码的正确轨道上 -

setInterval(function() {
    socket.emit('heartbeat', someData);
}, 5000);
Run Code Online (Sandbox Code Playgroud)

在客户端 -

socket.on('heartbeat', function(data) {
    console.log(data);
})
Run Code Online (Sandbox Code Playgroud)