到达 onmessage websocket 事件 HtmlUnit

Reaching onmessage websocket event HtmlUnit

我想在 onmessage 事件中读取 websocket 收到的消息。我遵循 thread

中的解释

我只实现了添加监听器并在创建 websocket 时得到通知,但我不知道如何在 onmessage 事件中读取 websocket 收到的消息。

这是我的代码:

    public class TestBet365Socket {
  public static void main(String[] args) throws Exception {


      /* turn off annoying htmlunit warnings */
        java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);



        WebClient client = new WebClient(BrowserVersion.CHROME);  
        client.getOptions().setCssEnabled(false);  
        client.getOptions().setJavaScriptEnabled(true);
        client.getOptions().setThrowExceptionOnScriptError(false);



        client.getInternals().addListener(new Listener() {

            @Override
            public void webSocketCreated(WebSocket arg0) {

                System.out.println("Websocket Created " + arg0);

            }
        });



        HtmlPage page = client.getPage("https://mobile.bet365.com/Default.aspx?lng=3");
        client.waitForBackgroundJavaScript(10000);

        List<NameValuePair> response =page.getWebResponse().getResponseHeaders();
        for (NameValuePair header : response) {
             System.out.println(header.getName() + " = " + header.getValue());
         }
        System.out.println(page.asText());

        client.close();
  }
}

你必须做两件事:

  1. 实施您自己的侦听器

创建一个实现 org.eclipse.jetty.websocket.api.WebSocketListener 的 class。在此 class 中,您可以实现捕获套接字通信的方式。

  1. 设置监听器

webSocketCreated() 方法获取一个 WebSocket 实例作为参数。使用您在第一步中创建的侦听器调用 setWebSocketListener(yourListener)。

现在你已经完成了,每次 websocket 获取数据时都会调用你的侦听器。