WebSocketListener OnMessage被阻止,其他传入消息入队

时间:2019-04-10 06:41:47

标签: java websocket okhttp okhttp3

我已经使用okhttp 3.5.0实现了Websocket客户端以连接到Spring Websocket服务器。

与服务器的websocket连接成功后,我订阅了多个主题以接收来自服务器的通知。收到通知后,如果在OnMessage函数中花很长时间来处理该消息,我观察到来自服务器的其他传入消息已排队,并等待第一条消息的完成。

是否有任何方法可以使WebSocketListener OnMessage函数并发,以使传入消息不等待任何其他较旧消息的完成?

我尝试将消息的处理委托给一个单独的线程,这解决了onMessage被阻塞的问题,但是我想知道还有其他方法可以实现相同的目的。

这是我创建websocket客户端的代码

OkHttpClient client = new OkHttpClient.Builder()
            .readTimeout(0, TimeUnit.MILLISECONDS).sslSocketFactory(sslSocketFactory, trustManager)
            .build();

    Request request = new Request.Builder()
            .url(url)
            .build();
    WebSocketListenerExtension webSocketListenerExtension = new WebSocketListenerExtension();
    client.newWebSocket(request, webSocketListenerExtension);
    // Trigger shutdown of the dispatcher's executor so this process can exit cleanly.
    client.dispatcher().executorService().shutdown();

0 个答案:

没有答案