我正在尝试实现一个Websocket连接,从这里开始 - https://gist.github.com/chitan/3063774。 这是一个echo服务器。 我的问题是 - 如何从特定用户接收消息并将其发送给另一个用户,而不是回显给同一个用户。 我搜索了很多,我发现的大部分例子都是Echo示例。
答案 0 :(得分: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);
}
}
有关详细信息,请转到此tutorial。
答案 1 :(得分: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;
}
...
}