Java 为什么Wicket Websocket有时拒绝将消息发送回服务器?

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中,我只能假设这两款浏览器都不喜欢

我最近在一个使用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.");
   }
}