我正在使用 Socket.IO,如本示例所示:
io.sockets.on("connection", function (socket) {
myService.on("myevent", function() {
socket.emit("myevent", { /* ... */ });
// some stuff happens here of course
});
});
myService
是一个单例并且是一个子类EventEmitter
这会触发myevent
随着时间的推移。一切正常,但我想在这种情况下我会造成某种泄漏。我的服务如何知道连接被破坏后不需要调用处理程序?是否有某种类型的销毁事件我可以捕获然后从中删除处理程序myService
?
监听套接字断开事件,当收到断开事件时,从套接字中删除相关的事件处理程序myService
object.
你应该能够这样做:
io.sockets.on("connection", function (socket) {
function handler() {
socket.emit("myevent", { /* ... */ });
// some stuff happens here of course
}
myService.on("myevent", handler);
socket.on("disconnect", function() {
myService.removeListener("myevent", handler);
});
});
如果您想要做的是广播到所有连接的套接字,您可以只安装一个“myevent”侦听器(而不是每个连接一个)并使用io.emit()
也可以向所有套接字广播,而不必为此目的处理连接或断开连接事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)