java websocket实现一对一聊天
时间: 2023-09-21 07:02:49 浏览: 120
Java中实现一对一聊天的 WebSocket 可以使用 Java API for WebSocket (JSR 356) 实现。以下是简单的实现步骤:
1. 创建一个 WebSocketServerEndpoint 类,继承 javax.websocket.Endpoint 类。
2. 在类中实现有 @OnOpen, @OnMessage, @OnClose 三个注解的方法,分别用于处理 WebSocket 的打开、消息接收和关闭事件。
3. 在 @OnOpen 中,使用 session.getBasicRemote().sendText() 方法向客户端发送欢迎消息。
4. 在 @OnMessage 中,使用 session.getId() 获取当前 session 的 id,然后遍历 sessionList,找到对应的接收端 session,使用接收端 session.getBasicRemote().sendText() 方法向接收端发送消息。
5. 在 @OnClose 中,从 sessionList 中删除当前关闭的 session。
以下是一个简单的示例:
```java
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/chat")
public class WebSocketServerEndpoint {
private static List<Session> sessionList = new ArrayList<>();
@OnOpen
public void onOpen(Session session) throws IOException {
sessionList.add(session);
session.getBasicRemote().sendText("Welcome to chat!");
}
@OnMessage
public void onMessage(String message, Session session) throws IOException {
String sessionId = session.getId();
for (Session s : sessionList) {
if (s.getId().equals(sessionId)) {
continue;
}
s.getBasicRemote().sendText(message);
}
}
@OnClose
public void onClose(Session session) {
sessionList.remove(session);
}
}
```
这是一个简单的实现,你可以根据需要进行改进。
阅读全文