websocket客户端向服务器发送信息,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);

}

}

}

此代码有问题。当我从第一个客户端发送消息“latencyEqualize”时,服务器仅对同一个客户端进行响应。其他客户端不会收到消息“最大延迟= 15”。但是当第二个客户端向服务器发送任何消息时,他会收到“Max latency = 15”。所有未来的服务器调用都会返回以前调用的消息。

有没有办法避免这种情况。我希望当其中一个客户端向服务器发送“latencyEqualize”消息时,所有客户端都会收到“Max latency”消息。

以下是一个简单的Java实现WebSocket客户端向服务端发送指令及接收服务端返回信息并打印出来的示例代码: ```java import java.net.URI; import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.util.Scanner; import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; public class WebSocketExample extends WebSocketClient { public WebSocketExample(URI serverUri) { super(serverUri); } @Override public void onOpen(ServerHandshake handshakedata) { System.out.println("Connected to server"); } @Override public void onClose(int code, String reason, boolean remote) { System.out.println("Disconnected from server"); } @Override public void onMessage(String message) { System.out.println("Received message: " + message); } @Override public void onMessage(ByteBuffer message) { // Handle binary message if needed } @Override public void onError(Exception ex) { ex.printStackTrace(); } public static void main(String[] args) throws URISyntaxException { WebSocketExample client = new WebSocketExample(new URI("ws://localhost:8080/")); client.connect(); Scanner scanner = new Scanner(System.in); while (true) { String command = scanner.nextLine(); if (command.equals("exit")) { client.close(); break; } client.send(command); } } } ``` 在这个示例中,我们使用了Java-WebSocket库来实现WebSocket客户端。我们创建了一个WebSocketExample类,继承WebSocketClient类,并实现了几个回调方法: - onOpen:当连接到服务器时触发 - onClose:当与服务器断开连接时触发 - onMessage:当接收服务器发送的文本消息时触发 - onMessage(ByteBuffer message):当接收服务器发送的二进制消息时触发 - onError:当出现错误时触发 在main方法中,我们创建了一个WebSocketExample实例并连接到服务器。然后,我们使用Scanner来读取用户输入的命令,并使用WebSocketExample实例的send方法将命令发送服务器。如果用户输入“exit”,我们将关闭WebSocket连接并退出程序。 这个示例只是一个简单的WebSocket客户端,你需要根据你的需求来修改代码,例如处理服务器返回的二进制消息,或者处理错误情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值