2014-10-08 56 views
0

我有spring + SockJS应用程序,即使用ActiveMQ作为消息代理。SockJS多个套接字

我可以在同一个JSP页面上有两个套接字,一个用于发送和接收,另一个用于接收stomp消息(具有很多流量)。它保证所有的消息都将被发送和接收插座?

问候, 马尔科

回答

0

当连接,是的。如果您在任何时候都失去连接,您将在断开连接和重新连接之间失去一切。 A related discussion of this issue得出这个结论。

请记住,SockJS可能会导致不同客户端上的连接类型不同,例如websocket,xhr,xdr等。在任何连接上,SockJS仍将使用TCP并仍将保证按顺序交付。但是,非websocket连接可能需要更长的时间才能触发关闭事件,因此您的客户端会有更长的停用期。几乎所有的服务都需要担心这一点,因为SockJS有时无法连接websocket并将其降级到xhr(以我的经验在高瞬时负载下)。

一个好的模式是在关闭事件处理程序中添加一个重新连接。甚至当连接建立失败时甚至会解除关闭,这意味着您需要在重新连接上进行回退延迟,以防止自己在服务器上造成DDoS。另外,我添加了连续的数据包号码,并将任何检测到丢失数据包的客户端视为晚期加入者。 (请参阅此related ZMQ discussion on late joiners。)您的应用程序需求可能会有所不同。