webSocket如何实现定向session发送消息
时间: 2024-04-24 16:25:37 浏览: 167
Websocket 向指定用户发消息的方法
要实现 WebSocket 的定向 session 发送消息,你可以通过 WebSocket 的 Session 对象来实现。下面是一个简单的示例:
```java
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@ServerEndpoint("/websocket")
public class WebSocketServer {
private static Map<String, Session> sessions = new ConcurrentHashMap<>();
@OnOpen
public void onOpen(Session session) {
// 将新连接的 Session 添加到 sessions Map 中
sessions.put(session.getId(), session);
}
@OnMessage
public void onMessage(String message, Session session) throws IOException {
// 解析消息,获取目标用户和要发送的消息内容
String[] parts = message.split(":");
String targetUser = parts[0];
String content = parts[1];
// 根据目标用户获取目标用户的 Session
Session targetSession = sessions.get(targetUser);
if (targetSession != null) {
// 发送消息给目标用户的 Session
targetSession.getBasicRemote().sendText(content);
} else {
// 目标用户不存在或不在线,可以进行相应处理
}
}
@OnClose
public void onClose(Session session) {
// 当连接关闭时,将对应的 Session 从 sessions Map 中移除
sessions.remove(session.getId());
}
}
```
在上面的示例中,我们使用 `ConcurrentHashMap` 来保存所有的 WebSocket 连接的 Session 对象。当有新的连接建立时,将其添加到 sessions Map 中;当连接关闭时,将其从 sessions Map 中移除。
在 `onMessage` 方法中,我们解析收到的消息,提取出目标用户和要发送的内容。然后通过目标用户在 sessions Map 中查找对应的 Session 对象,如果找到了,就使用 `getBasicRemote().sendText()` 方法发送消息给目标用户。
需要注意的是,这只是一个简单的示例,并没有考虑到消息的格式和安全性,你可能需要根据实际需求进行相应的改进和处理。
希望这个示例能帮助到你!如果还有其他问题,请随时提问。
阅读全文