我正在從幾個(大約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或某事的一些配置選項。有人知道是什麼原因導致這種行爲,以及如何解決?