2014-10-08 35 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。)您的應用程序需求可能會有所不同。