【问题标题】:Java websocket: How to receive PongMessage from websocket client and respond to this messageJava websocket:如何从 websocket 客户端接收 PongMessage 并响应此消息
【发布时间】:2018-07-30 17:41:01
【问题描述】:

我正在尝试将 PongMessage 从 web-socket 客户端发送到服务器(您可能会说心跳消息)。

在服务器中,我在使用@ServerEndpoint 注释的类中编写了这样的方法:

@OnMessage
        public void onPong(PongMessage pongMessage, Session session) {

          LOGGER.log(Level.INFO, " -- Got Hit Yaay!! -- ");

                try {
                    session.getBasicRemote().sendText(PONG_RECEIVED);
                } catch (IOException e) {
                    e.printStackTrace();
                }

        }

PongMessage 根据 oracle 文档接受ByteBuffer。我尝试在服务器中生成一个字节缓冲区并从套接字客户端发送完全相同的生成字节缓冲区值。服务器仍然抛出异常说它无法解码字符串

我无法点击onPong() methodpongmessage 是否有任何格式,客户端可以发送到 websocket 服务器以便调用 onPong() 方法?我在这里做错了什么?有任何想法吗 ?

【问题讨论】:

  • 你使用的是哪个 websocket 客户端?
  • @RafaelPaulino 一个名为 Simple Websocket Client 的 chrome 扩展。这仅用于测试目的。但后来,Angular 应用程序将成为一个 web-socket 客户端。
  • 我发现了一个旧的post,认为 Ping/Pong 消息应该由浏览器处理。如果这仍然是真的(我不确定),那么您应该转向“自定义”解决方案:不要使用 PongMessage。接收一些你定义的 JSON。
  • @RafaelPaulino 在成功连接网络套接字后,我尝试从服务器向浏览器发送 ping 消息。浏览器没有收到服务器发送的 ping 控制帧,服务器也没有从浏览器得到响应。发送 JSON 将起作用。将您的解决方案复制粘贴到答案框中,我会给您投票,它部分解决了我的问题:)

标签: java websocket java-ee-7 java-websocket


【解决方案1】:

我发现了一个旧的post,认为 Ping/Pong 消息应该由浏览器处理。如果这仍然是真的(我不确定),那么您应该转向“自定义”解决方案:不要使用 PongMessage。接收一些你定义的 JSON。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2017-09-30
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    相关资源
    最近更新 更多