0

我正在尝试以此处为例实现 Websocket 连接 - https://gist.github.com/chitan/3063774。这是一个回声服务器。我的问题是 - 我如何从特定用户那里获取消息并将其发送给另一个用户,而不是回显给同一个用户。我进行了很多搜索,发现的大多数示例都是 Echo 示例。

4

2 回答 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 回答