使用 onMessage (OkHttp) 的输出?

Posted

技术标签:

【中文标题】使用 onMessage (OkHttp) 的输出?【英文标题】:Use output from onMessage (OkHttp)? 【发布时间】:2021-08-06 00:06:17 【问题描述】:

我使用 OkHttp 从 WebSocket 获取数据,然后使用 runOnUiThread (MainActivity) 在 android 模拟器上显示它。有多个服务器响应(事件)。

我的 WebSocketListener 的 onMessage 函数是这样的:

@Override
        public void onMessage(WebSocket webSocket, String text) 
            while (text.contains("someEventName")) 
                output("Receiving : " + text);
            
        
    

这就是我将特殊事件显示为文本响应的方式。

是否有可能将这些数据作为某个新对象或全局变量实际获取,以便在其他任何地方使用它或将其传递给其他活动?

假设 - 使用 OkHttp、套接字及其侦听器,我还应该做什么才能使用/保存/传递来自服务器的数据作为文本?

onMessage 到底发生了什么?我们只是读书吗?

【问题讨论】:

【参考方案1】:

我还应该做什么才能使用/保存/传递来自服务器的数据作为文本

您可以在初始化服务器代码之前创建 BlockingQueue。然后,您可以通过 onMessage 函数将来自服务器的文本添加到此队列中,并从该队列中读取一个单独的线程。这本质上需要一些并发编程。

onMessage 中到底发生了什么?我们只是读书吗?

由于这是一个回调函数,并且不被任何用户代码调用,所以我们不能真正返回任何值(将控制返回到哪里?),因此它是一个“公共无效”函数。

【讨论】:

如果这解决了您的问题,请“接受”答案。

以上是关于使用 onMessage (OkHttp) 的输出?的主要内容,如果未能解决你的问题,请参考以下文章

postMessage和onmessage的使用

在 onMessage 注释中具有多个数据的 Websocket

Feign切换client到okhttp无法生效天坑!(附带发生的原因)

如何使 JMS onMessage 方法异步

WebSocket 频繁 onmessage 零拷贝

Web firebase.messaging().onMessage 未触发,但后台通知完美触发