Tomcat端口80 - 损坏的websocket消息

时间:2014-03-03 13:44:19

标签: java javascript tomcat websocket

我目前正在尝试编写一个使用websockets的小型Web应用程序。该应用程序正在对所有连接的客户端进行广泛的讨论。只要Tomcat容器在与端口80不同的端口上运行,这种方法就可以正常工作。

对于这种情况,请考虑Web应用程序始终广播消息。

工作行为如下(即在与80不同的端口上运行):

  1. 客户端(浏览器)成功连接服务器
  2. 客户端立即收到消息(即调用websocket回调函数)
  3. 一旦我将其配置为在端口80上运行,就会发现以下行为:

    1. 客户端(浏览器)成功连接服务器
    2. 从一开始就不会通过console.log(...)
    3. 观察到回调的调用
    4. 经过一段时间后,来自onmessage回调的调试输出会同时显示所有相同的时间戳,尽管5次广播之间的时间间隔肯定超过一秒
    5. 控制台日志:

      Event data: {"aktuell":50,"total":788,"msg":"Indexiere Artikel"} at Mon Mar 03 2014 14:24:22 GMT+0100
      Event data: {"aktuell":55,"total":788,"msg":"Indexiere Artikel"} at Mon Mar 03 2014 14:24:22 GMT+0100
      Event data: {"aktuell":60,"total":788,"msg":"Indexiere Artikel"} at Mon Mar 03 2014 14:24:22 GMT+0100
      Event data: {"aktuell":65,"total":788,"msg":"Indexiere Artikel"} at Mon Mar 03 2014 14:24:22 GMT+0100
      Event data: {"aktuell":70,"total":788,"msg":"Indexiere Artikel"} at Mon Mar 03 2014 14:24:22 GMT+0100
      Event data: {"aktuell":75,"total":788,"msg":"Indexiere Artikel"} at Mon Mar 03 2014 14:24:22 GMT+0100
      Event data: {"aktuell":80,"total":788,"msg":"Indexiere Artikel"} at Mon Mar 03 2014 14:24:22 GMT+0100
      Event data: {"aktuell":85,"total":788,"msg":"Indexiere Artikel"} at Mon Mar 03 2014 14:24:22 GMT+0100
      Event data: {"aktuell":90,"total":788,"msg":"Indexiere Artikel"} at Mon Mar 03 2014 14:24:22 GMT+0100
      Event data: {"aktuell":95,"total":784{"aktuell":50,"total":788, at Mon Mar 03 2014 14:24:22 GMT+0100
      

      使用Tomcat 7.0.42,7.0.52和Tomcat 8.0.3显示此行为。对于客户端IE 10,已经使用了Firefox 21和Chrome 33。

      在我看来,websockets的内容以某种方式被缓冲到大约510字节(在将调试消息仅剥离到消息内容时观察到)。即使我更改了JSON消息结构,它也总共有510个字节。

      使用端口80时,我遗漏了哪些不同之处?

      就像附加信息一样,在服务器端我使用

      session.getBasicRemote().sendText(message)    
      

      发送消息,在客户端使用

      ws = new WebSocket(url); // Open connection
      ws.onmessage = function(event) {
          console.log(event.data); // Stripped down version
      }
      

      处理任何传入的事件。

0 个答案:

没有答案