如何使用Spring WebSocket记录ping/pong消息?

yvt65v4c  于 2023-06-23  发布在  Spring
关注(0)|答案(1)|浏览(457)

我正在尝试检查和记录客户端和WebSocket服务器之间的ping / pong交换。
我尝试扩展BinaryWebSocketHandler,增加了这个方法:

@Override
protected void handlePongMessage(WebSocketSession session, PongMessage message) throws Exception {
    log.trace("RECEIVING PONG {} {}",message.getPayloadLength(), Utils.bytesToHex(message.getPayload().array()));
    super.handlePongMessage(session, message);
}

@Override
protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception {
    log.trace("RECEIVING MSG {} {}",message.getPayloadLength(), Utils.bytesToHex(message.getPayload().array()));
}

我可以看到handleBinaryMessage日志,但看不到PONG日志。你知道为什么吗?是否可能未启用ping/pong?

ippsafx7

ippsafx71#

handlePongMessage()方法在接收到pong消息时调用,而不是在接收到ping消息时调用。这不一定是你所期望的。
我测试的方法是使用wscat。

% npm install -g wscat 
% wscat -c ws://localhost:8080/ws_endpoint --slash -P
> Connected (press CTRL+C to quit)
> /ping hi
> < Received pong (data: "hi")
> /pong
Trace message logged.

所以客户端必须发送一个pong,而不是ping!

相关问题