WebSocketServlet:将消息发送到特定连接

时间:2013-09-25 10:02:48

标签: html5 java-ee servlets websocket

我正在尝试实现一个Websocket连接,从这里开始 - https://gist.github.com/chitan/3063774。 这是一个echo服务器。 我的问题是 - 如何从特定用户接收消息并将其发送给另一个用户,而不是回显给同一个用户。 我搜索了很多,我发现的大部分例子都是Echo示例。

2 个答案:

答案 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;
    }
 ...
}
相关问题