我们已经在JBoss容器上运行了一个使用CometD长轮询的Java servlet。这已在少数组织中实施,没有任何问题,但在最近的实施中,存在与该组织的网络设置有关的功能问题。
具体来说,大约5%的时间,连接请求都会收回402错误:
{"id":"39","error":"402::Unknown client","successful":false,"advice":{"interval":0,"reconnect":"handshake"},"channel":"/meta/connect"}
让这个组织解决网络性能是一项重大挑战,因此我们正在寻找一种方法来调整实施以减少这些问题。
哪些cometd配置参数可以更新以改善这一点? maxinterval,timeout,multiSessionInverval等?
谢谢!
答案 0 :(得分:1)
" 402未知客户"错误是由于服务器未从客户端看到/meta/connect
心跳消息并使服务器上的对应会话失效。这通常是由于网络问题造成的。
客户端网络恢复后,客户端发送/meta/connect
心跳消息,但服务器没有通信会话,因此402。
控制会话服务器端到期的参数为maxInterval
,在此处记录:https://docs.cometd.org/current/reference/#_java_server。
默认为10秒。如果增加它,则意味着您将在服务器内存会话中保留更长时间,因此您需要考虑到这一点。