Websocket 并发写入在 Java 中无法 100% 工作



我有一个websocket服务器,我有消息从java中的字节缓冲区队列发送到。下面是将队列中的消息发送到 websocket 服务器的代码,

protected void dequeue() throws InterruptedException, IOException
{
    ByteBuffer bbuf;
    while((bbuf = messageQueue.take()).get(0) != 0)
    {
        bbuf.position(bbuf.limit());
        System.out.println(bbuf);
        bbuf.flip();
        for(Session session : sessionList)
        {
            session.getBasicRemote().sendBinary(bbuf);
        }
    }
}

但是,当我尝试从队列中同时写入两条消息时,可靠性不是 100%。有时发送第一条和第二条消息,有时只发送第一条消息。我知道消息正在发送,因为 wireshark 向我显示消息在 100% 的时间内被发送,但并非每次都如前所述收到。当我在 websocket 上进行并发写入时,为什么会发生这种情况,而接收端并不总是会收到消息?我正在使用雄猫 7.0.53

这是

由于 tomcat 中的以下错误,https://issues.apache.org/bugzilla/show_bug.cgi?id=57318#c1 更新到 apache tomcat 7.0.57 将解决此问题。更新到高于7.0.53的 apache tomcat 版本可能会解决此问题,但尚未经过测试。

相关内容

  • 没有找到相关文章

最新更新