【问题标题】:WebSocketServlet: Send message to particular connectionWebSocketServlet:向特定连接发送消息
【发布时间】:2013-09-25 10:02:47
【问题描述】:

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

【问题讨论】:

    标签: html jakarta-ee servlets websocket


    【解决方案1】:

    在 Java EE7 中,您可以轻松做到这一点。想一个简单的例子。如果您在带有@OnMessage 注释的方法中编写client.getBasicRemote().sendObject(message);,则它将仅在活动的客户端会话中可用。

    @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

    【讨论】:

    • 谢谢马苏德,我会试试这个。
    【解决方案2】:

    如果您仍需要使用 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;
        }
     ...
    }
    

    【讨论】:

      猜你喜欢
      • 2013-04-23
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2021-08-21
      • 1970-01-01
      相关资源
      最近更新 更多