socket.io 捕获 nodejs 中的任何事件
socket.io catch any event in nodejs
我的 reactjs 应用程序创建了到 nodejs 的 socket.io 连接。使用 socket.io 4.1.2,我可以在服务器端的 connection
事件中看到它,如下所示;
const io = new Server(server);
io.on("connection", async (socket: Socket) => {
console.log("CONNECTION...", socket.id);
socket.onAny((event, ...args) => {
console.log(`ANY ${event}`, socket.id);
});
});
AFAIK,我们可以在服务器端捕获任何事件。但是,socket.onAny
在连接后永远不会被任何事件击中。例如,当我关闭浏览器时,我在服务器端看到了以下几行。但是any
没有捕捉到这个断开事件。
socket.io:client client close with reason transport error +6m
socket.io:socket closing socket - reason transport error +6m
socket.io:client client close with reason transport close +1s
socket.io:socket closing socket - reason transport close +1s
如何捕捉服务器端的所有事件?
我知道文档中没有说明,但我认为 onAny
侦听器只计算从客户端套接字“手动”发出的事件。喜欢:
// client
socket.emit("some-event");
// server
socket.onAny((event) => {
console.log(`ANY $[event}`);
});
// will log "ANY some-event"
但是,对于 disconnect
事件,您需要一个额外的侦听器,例如:
// server
socket.on("disconnect", (reason) => {
// ...
});
尝试从您的客户端发出一些事件并检查您的 onAny
侦听器是否被触发。应该!
我的 reactjs 应用程序创建了到 nodejs 的 socket.io 连接。使用 socket.io 4.1.2,我可以在服务器端的 connection
事件中看到它,如下所示;
const io = new Server(server);
io.on("connection", async (socket: Socket) => {
console.log("CONNECTION...", socket.id);
socket.onAny((event, ...args) => {
console.log(`ANY ${event}`, socket.id);
});
});
AFAIK,我们可以在服务器端捕获任何事件。但是,socket.onAny
在连接后永远不会被任何事件击中。例如,当我关闭浏览器时,我在服务器端看到了以下几行。但是any
没有捕捉到这个断开事件。
socket.io:client client close with reason transport error +6m
socket.io:socket closing socket - reason transport error +6m
socket.io:client client close with reason transport close +1s
socket.io:socket closing socket - reason transport close +1s
如何捕捉服务器端的所有事件?
我知道文档中没有说明,但我认为 onAny
侦听器只计算从客户端套接字“手动”发出的事件。喜欢:
// client
socket.emit("some-event");
// server
socket.onAny((event) => {
console.log(`ANY $[event}`);
});
// will log "ANY some-event"
但是,对于 disconnect
事件,您需要一个额外的侦听器,例如:
// server
socket.on("disconnect", (reason) => {
// ...
});
尝试从您的客户端发出一些事件并检查您的 onAny
侦听器是否被触发。应该!