我怎么知道我的websocket客户端是否被淹没了?

时间:2018-02-03 02:20:20

标签: javascript websocket

我有一个websocket客户端,每秒从websocket流接收200-300条消息。我接收消息的JavaScript客户端正在对收到的每条消息进行一些DOM操作。我担心在浏览器中运行应用程序几分钟后,消息的处理可能会落后。就像聊天应用程序被传入的消息所淹没一段时间之后,接收websocket消息并将其显示给用户之间的延迟增长和增长...另一个例子是实时股票市场页面,但是在打开之后几分钟,实时价格不再是实时的......

如何确定我的浏览器是否跟上传入的websocket消息?

更新

我最终让每条消息更新页面上的一个时钟,看看它是否落后了:

function onMessage(evt)
{
  var dt = new Date();
  $("#clock").text( dt.toLocaleTimeString() ); // "8:43:55 PM"

  // other DOM manipulations related to each websocket message ...
}

1 个答案:

答案 0 :(得分:1)

如果您的意思是在调试时如何确定它,那么您可以查看您的CPU利用率,看看您是否淹没了CPU。

如果您的意思是如何在Javascript浏览器中确定它,那么我可以想到一些想法:

  1. 在每封邮件中加上服务器时间戳。然后,当您开始处理消息时,计算当前系统时间与消息中的时间戳之间的差异。如果这种差异正在上升,那么客户就会落后。如果它保持相对稳定,那么客户就会跟上。

  2. 您可以通过以下方式了解服务器的备份方式:

  3. 代码:

    let start = Date.now();
    setTimeout(function() {
        console.log(Date.now() - start);
    }, 0);
    

    如果输出更大的数字,那么您的事件队列将备份几毫秒。