在浏览器中关闭 WebSocket 连接时是不是必须手动删除事件侦听器?
Posted
技术标签:
【中文标题】在浏览器中关闭 WebSocket 连接时是不是必须手动删除事件侦听器?【英文标题】:Do event listeners have to be removed manually when closing WebSocket connection in browser?在浏览器中关闭 WebSocket 连接时是否必须手动删除事件侦听器? 【发布时间】:2019-11-23 12:58:13 【问题描述】:我正在使用WebSocket API 提供的本机方法。
我想知道是否需要删除事件侦听器,因为 link 和用于 websockets 的 MDN 示例 code 中都没有提到 removeEventListener
方法。
我正在使用这样的事件方法:
const ws = new WebSocket(url);
ws.onopen = () =>
此外,我想知道如果我用ws.close()
方法关闭连接,是否需要删除事件监听器,我想它会在清理时删除监听器。
【问题讨论】:
可能重复?虽然这是关于 node.js ***.com/questions/13430505/… @Nikki9696 这个问题是关于 Socket.IO 库的,而我在问的是 WebSocket API 本机方法。 我对 Django 频道进行了一些测试,发现无论有没有 .removeEventListener WS 连接正在关闭,我唯一需要关闭服务器的是 WS.close() 所以我不认为你应该手动做,虽然我不完全确定 【参考方案1】:您必须手动删除事件侦听器。 事实上,添加的侦听器将在元素上保持活动状态,直到它们被销毁或在现代浏览器中手动删除。 您可以尝试测试是否在关闭 Web 套接字连接后触发事件。
【讨论】:
【参考方案2】:"挖掘socket.io源码后,客户端断开连接时socket对象(即EventEmitter)被删除,无需手动调用removeAllListener"
从这里复制:do I have to remove event listener when socket is disconnected?
【讨论】:
问题是关于 WebSocket API,而不是 socket.io,据我测试,它们在连接关闭时会被删除。如果我发现别的东西会更新以上是关于在浏览器中关闭 WebSocket 连接时是不是必须手动删除事件侦听器?的主要内容,如果未能解决你的问题,请参考以下文章
在 .NET 应用程序中关闭 MySQL 连接是不是重要? (准确地说,C#)
是否需要在 Flask 应用程序中关闭 python SQL 连接?