java websocket 广播
时间: 2023-10-17 12:34:01 浏览: 72
在Java中使用WebSocket进行广播可以通过以下步骤实现:
1. 导入必要的库和类:
```java
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
```
2. 创建WebSocket广播服务器端点:
```java
@ServerEndpoint("/")
public class WebSocketServer {
// 存储所有连接的客户端会话
private static Set<Session> sessions = new HashSet<>();
// 客户端连接时触发
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
}
// 客户端关闭连接时触发
@OnClose
public void onClose(Session session) {
sessions.remove(session);
}
// 接收客户端消息时触发
@OnMessage
public void onMessage(String message, Session session) throws IOException {
broadcast(message);
}
// 广播消息给所有连接的客户端
private static void broadcast(String message) throws IOException {
for (Session session : sessions) {
session.getBasicRemote().sendText(message);
}
}
// 发生错误时触发
@OnError
public void onError(Throwable throwable) {
throwable.printStackTrace();
}
}
```
3. 配置WebSocket服务器:
```java
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer;
public class Main {
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServletContextHandler contextHandler = new ServletContextHandler();
contextHandler.setContextPath("/");
server.setHandler(contextHandler);
WebSocketServerContainerInitializer.configure(contextHandler, (servletContext, webSocketContainer) -> {
webSocketContainer.addEndpoint(WebSocketServer.class);
});
server.start();
server.join();
}
}
```
4. 运行`Main`类启动WebSocket服务器。
现在,你可以通过WebSocket连接到服务器并发送消息,服务器将会把该消息广播给所有连接的客户端。
阅读全文