java使用websocket群聊
时间: 2023-11-06 17:05:24 浏览: 49
要使用Java实现WebSocket群聊,可以使用Java API中的javax.websocket包。具体实现步骤如下:
1. 创建一个WebSocket服务器端点类,实现javax.websocket.Endpoint接口,并重写onOpen、onClose、onError、onMessage等方法。
2. 在onOpen方法中,获取Session对象,并将其存储到一个集合中,用于后续广播消息。
3. 在onMessage方法中,遍历存储Session的集合,向每个Session发送消息。
4. 在onClose方法中,从存储Session的集合中移除关闭的Session。
下面是一个简单的示例代码:
```java
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.MessageHandler;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/chat")
public class ChatEndpoint extends Endpoint {
private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());
@Override
public void onOpen(Session session, EndpointConfig config) {
sessions.add(session);
session.addMessageHandler(new MessageHandler.Whole<String>() {
@Override
public void onMessage(String message) {
broadcast(message);
}
});
}
@Override
public void onClose(Session session, CloseReason closeReason) {
sessions.remove(session);
}
@Override
public void onError(Session session, Throwable throwable) {
throwable.printStackTrace();
}
private static void broadcast(String message) {
for (Session session : sessions) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```