java - 使用什么 cometd 配置来减少 402 错误的发生?

标签 java networking jboss cometd

我们已经实现了一个在 JBoss 容器上运行的 Java servlet,它使用 CometD 长轮询。这已在一些组织中实现,没有任何问题,但在最近的实现中,存在似乎与该组织的网络设置相关的功能问题。

具体来说,大约 5% 的时间,连接请求会返回 402 错误:

{"id":"39","error":"402::Unknown client","successful":false,"advice":{"interval":0,"reconnect":"handshake"},"channel":"/meta/connect"}

让该组织解决网络性能问题是一项重大挑战,因此我们正在寻找一种方法来调整实现以减少这些问题。

可以更新哪些 cometd 配置参数来改善这一点? maxinterval、超时、multiSessionInverval 等?

谢谢!

最佳答案

“402 未知客户端”错误是由于服务器没有看到来自客户端的 /meta/connect 心跳消息而导致服务器上的相应 session 过期。这通常是由于网络问题造成的。

一旦客户端网络恢复,客户端会发送 /meta/connect 心跳消息,但服务器没有对应的 session ,因此会出现 402。

控制服务器端 session 过期的参数是 maxInterval,记录如下:https://docs.cometd.org/current/reference/#_java_server .

默认为 10 秒。如果增加它,则意味着您在服务器内存中保留 session 的时间更长,因此您需要考虑到这一点。

关于java - 使用什么 cometd 配置来减少 402 错误的发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44812303/

相关文章:

java - Jboss as 7 花了很长时间才开始

java - 使用 executeBatch() 获取插入的(或现有的)id

java - 如何处理退出的 Android 应用程序?

angularjs - 如何在 tomcat 或 jboss 上部署我的 Angular 2 应用程序?

windows - 在 Windows 上如何使用批处理脚本获取网络接口(interface)名称是否为 eth0/eth1/eth2?

android - 替代 NetworkInterface.getHardwareAddress()?

java - 在运行时查找打包的非 java 文件的路径

java - 在哪里可以为新的 Firebase Cloud Message API 获取 java 的范围依赖项?

java - Java 中的 ZigZag 解码/编码

android - 注册监听器问题