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

Websocket并发写入在java中无法100%工作,java,websocket,queue,tomcat7,bytebuffer,Java,Websocket,Queue,Tomcat7,Bytebuffer,我有一个websocket服务器,java中的bytebuffers队列向其发送消息。下面是将队列中的消息发送到websocket服务器的代码 protected void dequeue() throws InterruptedException, IOException { ByteBuffer bbuf; while((bbuf = messageQueue.take()).get(0) != 0) { bbuf.position(bbuf.limi

我有一个websocket服务器,java中的bytebuffers队列向其发送消息。下面是将队列中的消息发送到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上并发写消息时,为什么会发生这种情况,接收端并不总是接收消息?我使用的是tomcat 7.0.53

这是由于tomcat中存在以下错误,更新到apache tomcat 7.0.57将解决此问题。更新到高于7.0.53的apache tomcat版本可能会解决此问题,但尚未测试。

当您说从队列同时写入两条消息时,您的意思是队列上有两个ByteBuffer?或者有两个线程在调用.sendBinary?@vtorola是的,它是一个queue@vtortola我发现了一个问题,实际上我发现了一个tomcat bug,并且使用7.0.57版本修复了这个问题。