小编Pav*_*zov的帖子

websocket从服务器向所有客户端发送消息

我想向所有活跃的客户发送消息.

@OnMessage
public void onMessage(String message, Session session) {
    switch (message) {
    case "latencyEqualize":

        for (Session otherSession : session.getOpenSessions()) {
            RemoteEndpoint.Basic other = otherSession.getBasicRemote();
            String data = "Max latency = "
                    + LatencyEqualizer.getMaxLatency(latencies);            
            try {
                other.sendText(data);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        break;
    default:

        RemoteEndpoint.Basic other = session.getBasicRemote();          
        try {
            other.sendText(message);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码出了点问题.当我从第一个客户端发送消息"latencyEqualize"时,服务器只响应同一个客户端.其他客户端不会收到"Max latency = 15"消息.但是当第二个客户端向服务器发送任何消息时,他收到"最大延迟= 15".以后对服务器的所有呼叫都会从之前的呼叫中返回消息.

有没有办法避免这种情况.我希望所有客户端在其中一个客户端向服务器发送"latencyEqualize"消息时收到"Max latency"消息.

java java-websocket

3
推荐指数
1
解决办法
4022
查看次数

标签 统计

java ×1

java-websocket ×1