代码之家  ›  专栏  ›  技术社区  ›  bremen_matt

多WebSocket的Javascript线程模型

  •  1
  • bremen_matt  · 技术社区  · 7 年前

    我有一个javascript客户端,它必须与不止一个Websocket服务器通信。其中一台服务器发送的是我可以快速处理的小型高频有效负载,而另一台服务器发送的是需要较长时间处理的大型低频数据:

    this.hifreq = new WebSocket("ws://192.168.1.2:4646/hi");
    this.hifreq.onmessage = this.onHighfreqMessage;
    
    this.lofreq = new WebSocket("ws://192.168.1.3:4646/lo");
    this.lofreq.onmessage = this.onLowfreqMessage;
    

    我找不到任何精确的文档说明线程模型将如何工作。每个人似乎都在说浏览器模型是单线程的,所以我不可能接收两个有效负载并同时处理它们,但我找不到一个具体的文档来说明这一点。对吗?如果是这样的话,有没有办法在不同的线程上处理消息?

    我来自C++/Java背景,因此我试图了解我的选择。

    1 回复  |  直到 7 年前
        1
  •  1
  •   J.Doe    7 年前

    您可以使用Web Worker来完成繁重的后台任务。请注意,JavaScript看起来仍然是单线程的。您无权访问工作线程中页面的窗口对象。你应该使用 postMessage onmessage DedicatedWorkerGlobalScope