我正在尝试以此处为例实现 Websocket 连接 - https://gist.github.com/chitan/3063774。这是一个回声服务器。我的问题是 - 我如何从特定用户那里获取消息并将其发送给另一个用户,而不是回显给同一个用户。我进行了很多搜索,发现的大多数示例都是 Echo 示例。
问问题
531 次
2 回答
1
在 Java EE7 中,您可以轻松做到这一点。想一个简单的例子。如果您编写client.getBasicRemote().sendObject(message);
带有@OnMessage
注释的方法,那么它将仅在活动客户端会话中可用。
@ServerEndpoint("/websocket")
public class ChatEndpoint {
@OnMessage
public void message(String message, Session client) throws IOException, EncodeException {
client.getBasicRemote().sendObject(message);
}
}
如果您在 client.getOpenSessions() 上循环消息,那么它将可供所有客户端使用:
@OnMessage
public void message(String message, Session client) throws IOException, EncodeException {
for (Session peer : client.getOpenSessions()) {
peer.getBasicRemote().sendObject(message);
}
}
有关详细信息,请转到本教程。
于 2013-09-25T10:57:46.770 回答
0
如果您仍然需要使用 Java 6,并且WebSocketServlet
可以执行以下操作:
public class WsChatServlet extends WebSocketServlet{
public StreamInbound createWebSocketInbound(String protocol){
MyMessageInbound ms = new MyMessageInbound();
// store ms somewhere and than find it and use getWsOutbound() to respond
return ms;
}
...
}
于 2015-06-17T12:56:12.257 回答