websocket 在www.example.com中,确认回调函数如何在客户端运行socket.io?

yeotifhr  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(137)

这是在客户端上写入的发出事件。

socket.emit('test', 'This is a message', () => {
console.log('Callback Function');
});

这是写在服务器端的广播器。

io.on('connection', (socket) => {
socket.on('test', (message, callback) => {
console.log(message);
callback();
})}

每当一个'test'事件从客户端发出时,它就会在服务器端执行。console.log(message)在客户端打印消息'This is a message'(基本上是在快速服务器日志中),这是正确的。但是回调函数如何在服务器端调用回调时在浏览器控制台打印消息'Callback Function'呢?

dffbzjpn

dffbzjpn1#

既然你提到了express,这对你来说会更容易理解。使用express,当你向一个匹配的路由发送请求时,比如get,你会返回一个响应,其中包含你想要的数据。这就是请求响应生命周期。
为了不涉及太多技术性问题,在socket io中,一个类似的事件序列在幕后发生:当您执行socket.emitter事件时,简单地说,
1.请求将被发送到您的套接字服务器。
1.然后,套接字服务器将执行您的逻辑
1.一旦完成,就会引发一种done事件。
如果你传递了回调,这看起来就是你的情况,这种done事件,(3),将像上面提到的响应生命周期启动器一样,无论你用什么数据调用这个回调,都等价于你在express中发送的响应对象,你只是被抽象了,你在express路由中真正做的事情,所以回调被调用了。

socket.emit('test', 'This is a message', (xxx) => {
    /// xxx has data from server if any
    console.log('Callback Function');
    });

这实际上就是socketio所说的确认。

相关问题