gpt4 book ai didi

java - Tomcat websocket 客户端框架

转载 作者:行者123 更新时间:2023-11-28 23:33:41 28 4
gpt4 key购买 nike

我有以下代码在 java 中作为 websocket 的 clientendpoint 执行

   protected void dequeue() throws InterruptedException, IOException
{
ByteBuffer bbuf;
System.out.println("start");
while((bbuf = messageQueue.take()).get(0) != 0)
{
bbuf.position(bbuf.limit());
if(bbuf.get(0)== 0)
System.out.println("here");
bbuf.flip();
for(Session session : sessionList)
{
//Thread.sleep(10000);
if(!session.isOpen())
break;
session.getBasicRemote().sendBinary(bbuf);
}
}
System.out.println("end");
}

当被注释掉的 Thread.sleep() 被放回代码中时,代码工作正常。但是,当 Thread.sleep() 未包含在代码中时,对 websocket 的写入有时会起作用,而其他时候则在写入第一条消息后调用 @onClose 并且给出以下原因,

CloseReason:代码 [1002],原因 [客户端框架将保留位设置为 [7],此端点不支持]

其中 [7] 有时会是 1,2 等。我还没有找到任何关于为什么会发生这种情况的真正原因,有没有人碰巧对正在发生的事情有任何洞察力?请注意,我正在使用 tomcat 7.0.53 托管 websocket 的服务器端,并使用 HTTPS 而不是 HTTP。

最佳答案

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

关于java - Tomcat websocket 客户端框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27234505/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com