gpt4 book ai didi

android - 将现有的 WebSocket 实现转换为 Android Java 中的 Reactive WebSocket

转载 作者:行者123 更新时间:2023-12-05 00:04:52 26 4
gpt4 key购买 nike

我在 Android 中将 OKHttpClient 与 WebSockets 结合使用。我想将其转换为响应式(Reactive)编程。如何实现这一目标。现在我正在为 WebSocket 连接执行此操作。

    // OkHttp Client
OkHttpClient httpClient = new OkHttpClient.Builder().build();

// WebSocket Object
Request request = new Request.Builder().url(url).build();
mWebSocket = httpClient.newWebSocket(request, new WebSocketListener() {
// Override methods - OnOpen, OnMessage, OnClosing, OnFailure
}

// Then Calling this to make websocket request
mWebSocket.send(message);

我发现这个库使用 Reactive WebSocket https://github.com/jacek-marchwicki/JavaWebsocketClient

但是没有作为“WebSocketListener”的回调监听器,所以我可以处理消息。

在这方面的任何帮助将不胜感激。谢谢

最佳答案

Tinder 有改造灵感的 websocket 客户端 https://github.com/Tinder/Scarlet

这里除了发送和接收常规消息外,您还可以创建一个 react 流来接收 Websocket.Event 并过滤传入的事件,如 onOpen、onMessage、onFailed 等。

下面是一个关于如何做到这一点的例子。转到上面提供的链接以获取详细示例

//Service declaration similar to retrofit
interface MyWebsocketService{
@Receive
Flowable<WebSocket.Event> observeWebSocketEvent();
}

Scarlet scarletInstance = new Scarlet.Builder()
.webSocketFactory(OkHttpClientUtils.newWebSocketFactory(okhttpClient,"websocket-server-url")
.addStreamAdapterFactory(new RxJava2StreamAdapterFactory())
.build();

MyWebsocketService myWebsocketService = scarletInstance.create<MyWebsocketService>();

myWebsocketService.observeWebsocketEvent()
.subscribe(event -> {
if(event instanceof Websocket.Event.OnConnectionOpened){
//do something here
}else if(event instanceof Websocket.Event.OnConnectionClosed){
//do something here
}
});

关于android - 将现有的 WebSocket 实现转换为 Android Java 中的 Reactive WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61674345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com