boj*_*jek 2 javascript flooding websocket
我是websocket的新手,我在Web应用程序上实现了websocket,服务器端是用java编写的,客户端是javascript.服务器通过websocket向客户端发送通知.我想知道如果客户端没有足够快的速度来处理传入的消息,就像服务器发送它们一样快,会发生什么.例如,服务器可能每秒发送大约200条文本消息,客户端速度慢,每秒处理100条消息.我相信浏览器会在处理之前对传入消息进行排队,但不确定.我还知道如何检查此缓冲区大小及其限制,以及如果达到缓冲区限制会发生什么.关于如何模拟这种情况的任何想法,我试过:
webSocket.onmessage = function (message) {
var bool = true;
var datenexexec = Date.now() + 1000;
while(bool) {
if(Date.now() > datenexexec){
bool = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这会导致浏览器仅挂起并在以后崩溃.感谢帮助.
为了比客户端读取数据更快地发送数据,这将是最终会发生的事情.
TCP是一种可靠的协议,因此它只会缓冲并稍后传输,直到缓冲区已满.它不应该自己丢失数据包(除非连接丢失),但是当缓冲区已满时,它会给你一个错误,它不能再发送,因为缓冲区已满.
至于你试过的客户端代码,你不能在Javascript中忙碌/等待很长时间.这会杀死事件循环并最终导致脚本引擎崩溃.
您模拟此操作的唯一方法是尝试实际发送比客户端可以处理的更多数据包.您可以编写一个"慢"客户端,在短忙/等待循环中处理每个数据包可能需要250毫秒,而发送大量数据包的"快速"服务器应该能够模拟它.
| 归档时间: |
|
| 查看次数: |
1411 次 |
| 最近记录: |