javascript – 如何清除websocket上的缓冲区?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何清除websocket上的缓冲区?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含867字,纯文字阅读大概需要2分钟。
内容图文
![javascript – 如何清除websocket上的缓冲区?](/upload/InfoBanner/zyjiaocheng/822/66f6d43f4f9a463b9ecac1ffdda92d18.jpg)
似乎websocket在断开连接时缓冲消息,并在连接后立即发送消息.
我可以看到bufferedAmount的websocket正在增加,但它是只读的.
有没有办法重置缓冲区,以便在断开连接时发送的消息不会自动发送?
解决方法:
我认为您正在寻找的方法是确保readyState attribute等于1:
if(ws.readyState == 1)
ws.send("hi!");
这将阻止Websocket断开连接时的缓冲.
您还可以包装原始函数以强制执行此行为,而无需更改其他代码:
ws._original_send_func = ws.send;
ws.send = function(data) {
if(this.readyState == 1)
this._original_send_func(data);
}.bind(ws);
另请注意,这可能是特定于浏览器的问题.我在safari上测试了这个,我不知道为什么Safari在断开web套接字后缓冲数据.
注意:我知道没有重新连接API.浏览器使用新的Websocket对象重新连接.
连接丢失后,缓冲的数据不会出现在任何地方,因为它与特定的(现已过时的)WebSocket对象相关联.
应删除整个WebSocket对象(与其缓冲区一起)或由垃圾收集器收集(确保删除对该对象的任何现有引用),否则数据将存储在内存中.
内容总结
以上是互联网集市为您收集整理的javascript – 如何清除websocket上的缓冲区?全部内容,希望文章能够帮你解决javascript – 如何清除websocket上的缓冲区?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。