可以使用javax.websocket
包中的类来实现WebSocket广播。以下是一个简单的实现示例:
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@ServerEndpoint("/broadcast")
public class BroadcastServer {
private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<>());
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
}
@OnMessage
public void onMessage(String message, Session session) {
broadcastMessage(message);
}
@OnClose
public void onClose(Session session) {
sessions.remove(session);
}
@OnError
public void onError(Session session, Throwable throwable) {
sessions.remove(session);
}
private void broadcastMessage(String message) {
synchronized (sessions) {
for (Session session : sessions) {
if (session.isOpen()) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
_______________________________________________________________
JavaScript在客户端,可以通过以下代码连接到该WebSocket服务器并接收广播消息:
var ws = new WebSocket('ws://localhost:8080/broadcast');
ws.onmessage = function(event) {
console.log('Received message: ' + event.data);
};