2015-10-05 41 views
0

我正在從幾個(大約10個)Android客戶端收集數據的websocket實現方面工作。 因此,我創建了一個在本地主機上運行的經典ServerEndpoint,在客戶端上運行了一個應用程序,該應用程序打開與ServerEndpoint的連接並每隔500ms發送一次傳感器數據。當連接到多個客戶端時,ServerEndpoints onMessage「排隊」

整個事情工作正常,如果我只使用一個客戶端。 但是,如果我使用多個客戶端,他們將全部按時發送消息,但隨機調用ServerEndpoints onMessage。它看起來像「排隊」來自客戶端的消息幾秒鐘,然後連續5次觸發onMessage方法。然而,我總是會在確切的時間需要它。我可以強制這個嗎?

沒有錯誤或異常顯示。

這是非常基本的服務器端:

@ServerEndpoint("/ServerEndpoint") 
public class ServerEndpoint { 

static Set<Session> connections = Collections.synchronizedSet(new HashSet<Session>()); 

@OnOpen 
public void handleOpen(Session userSession){ 
    log("opened session: "+ userSession); 
    connections.add(userSession); 
} 

@OnMessage 
public void handleMessage(String message, Session userSession) throws IOException{ 

    String userName = (String) userSession.getUserProperties().get("username"); 
    log("received message from: "+ userName+": "+Calendar.getInstance().get(Calendar.SECOND)+":"+Calendar.getInstance().get(Calendar.MILLISECOND)+ " "+ message); 

    .... 
} 

@OnClose 
public void handleClose(Session userSession){ 
    log("closed session: "+userSession); 
    connections.remove(userSession); 
} 

我想我錯過了ServerEndpoint或某事的一些配置選項。有人知道是什麼原因導致這種行爲,以及如何解決?

回答

0

好吧。問題是Tomcat 7這顯然與websockets有一些問題。使用Tomcat 8,它現在沒有任何隊列或大的延遲。更新中還解決了其他小錯誤和連接問題,它似乎更加穩定。

也許這可以幫助遇到類似問題的人。

相關問題