Java 为什么Wicket Websocket有时拒绝将消息发送回服务器?
我最近在一个使用ApacheWicket 8.6的项目中遇到过这种情况(7.15中也遇到过这种情况)。Websocket客户端成功地向后端服务器应用程序注册,然后在单击专用按钮时拒绝发送消息 HTML(来自HomePage.HTML)是: 在浏览器调试器中,我可以在单击按钮时看到按钮事件,但就好像消息根本没有被发送一样。更糟糕的是,它有时有效,有时无效,所以我无法始终如一地复制它,但由于它同时出现在Firefox 69.0和Vivaldi 2.8.1664.38中,我只能假设这两款浏览器都不喜欢Java 为什么Wicket Websocket有时拒绝将消息发送回服务器?,java,websocket,wicket,Java,Websocket,Wicket,我最近在一个使用ApacheWicket 8.6的项目中遇到过这种情况(7.15中也遇到过这种情况)。Websocket客户端成功地向后端服务器应用程序注册,然后在单击专用按钮时拒绝发送消息 HTML(来自HomePage.HTML)是: 在浏览器调试器中,我可以在单击按钮时看到按钮事件,但就好像消息根本没有被发送一样。更糟糕的是,它有时有效,有时无效,所以我无法始终如一地复制它,但由于它同时出现在Firefox 69.0和Vivaldi 2.8.1664.38中,我只能假设这两款浏览器都不喜欢
还有其他人遇到过这个问题吗?我建议您在send()方法上设置一个断点,看看问题出在哪里:。否则,请创建一个复制它的迷你应用程序(有时),我们可以看一看。我已经远离了这一点,但最近设法有时间再看一看。根据我使用调试器的观察,当第一次加载页面时,WebSocket通信似乎没有实际设置。在浏览器中点击refresh不仅可以重新加载页面,还可以设置WebSocket通信。值得一提的是,我将Tomcat9.0.24与JavaxWebSocketFilter一起使用。此外,刷新技术仅适用于Firefox。它对Vivaldi没有任何影响(我假设它适用于大多数(如果不是所有的话)基于Chrome的浏览器)。请创建一个迷你应用程序,重现这个问题,并与我们分享,让我们看看。
<div>
<button onclick="Wicket.WebSocket.send('connect');">CONNECT</button>
<button onclick="Wicket.WebSocket.send('reset');">RESET</button>
</div>
add(new WebSocketBehavior() {
private static final long serialVersionUID = 1L;
@Override
protected void onConnect(ConnectedMessage message) {
super.onConnect(message);
logger.log(Level.INFO, "onConnect() message is " + message.toString());
}
@Override
protected void onMessage(WebSocketRequestHandler handler, TextMessage message) {
logger.info("Got message " + message.getText() + " from browser.");
}
}