Java WebSocket是否适合使用寿命很长的连接?

Java WebSocket是否适合使用寿命很长的连接?,java,websocket,netty,Java,Websocket,Netty,我正在考虑将web套接字与Netty一起用于一个应用程序,在这个应用程序中,客户端首先连接到服务器以获取一些信息。然后,它们由服务器注册,对特定客户机信息的任何更改都将触发向客户机发送包含更新信息的通知。在这种情况下,通信首先由客户机发起,然后由服务器发起。因此,web套接字似乎适合这种情况 但是,在它启动之后,我希望我的客户机能够随时收到服务器的通知。可能是一天后,也可能是几周后。所以,我的问题是,使用web套接字是否可以实现长寿命连接 感谢WebSocket的设计就是为了实现长寿命连接。根据

我正在考虑将web套接字与
Netty
一起用于一个应用程序,在这个应用程序中,客户端首先连接到服务器以获取一些信息。然后,它们由服务器注册,对特定客户机信息的任何更改都将触发向客户机发送包含更新信息的通知。在这种情况下,通信首先由客户机发起,然后由服务器发起。因此,web套接字似乎适合这种情况

但是,在它启动之后,我希望我的客户机能够随时收到服务器的通知。可能是一天后,也可能是几周后。所以,我的问题是,使用web套接字是否可以实现长寿命连接


感谢

WebSocket的设计就是为了实现长寿命连接。根据客户机的连接方式,这些连接可能在生命周期内受到限制,即在零售DSL连接上,通常至少每24小时强制重新连接一次

然后,您似乎希望在原始WebSocket(只提供双向消息传递)的基础上发布和订阅消息传递模式。看一看:(和)


免责声明:我是WAMP和Autobahn的原始作者,为Tavendo工作。

当然,但有几个注意事项

如果您想让连接长时间保持活动状态,那么我建议向客户端添加一些逻辑,以便在onclose事件发生时重新连接(您需要某种退避,以防止在某些情况下出现紧密的重新连接循环)

您可能还希望每隔5分钟左右发送一条ping消息(一条被忽略的简单消息),以防止空闲超时(这可能发生在网络连接的多个位置)。TCP网络堆栈通常设置为终止空闲2小时的连接,ping消息将使它们保持活动状态。允许浏览器实现对应用程序不可见的ping消息,但这是可选的,因此如果要保证这种行为,您应该在应用程序级别实现自己的ping消息


注意:是WebSocket规范的一部分,但尚未通过API提供

是的,Ping/Pong框架不是web浏览器javascript API的一部分,但它们是netty的一部分。