gpt4 book ai didi

android - 如何使用 Scarlet 在 Android 上通过 WebSocket 进行连接?

转载 作者:行者123 更新时间:2023-12-02 10:17:13 46 4
gpt4 key购买 nike

来自 README.md 的代码

 val scarletInstance = Scarlet.Builder()
.webSocketFactory(okHttpClient.newWebSocketFactory(GDAX_URL))
.addMessageAdapterFactory(MoshiMessageAdapter.Factory())
.addStreamAdapterFactory(RxJava2StreamAdapterFactory())
.build()

版本和依赖项:

implementation 'com.tinder.scarlet:scarlet:0.1.8'
implementation "com.github.tinder.scarlet:scarlet-websocket-okhttp:0.1.7"
implementation "com.github.tinder.scarlet:scarlet-stream-adapter-rxjava2:0.2.4"
implementation "com.github.tinder.scarlet:scarlet-message-adapter-moshi:0.2.4"
implementation "com.github.tinder.scarlet:scarlet-lifecycle-android:0.2.4"

最佳答案

首先,您应该使用接口(interface)声明一个 WebSocket 客户端。使用 Scarlet 注释(例如 @Receive@Send)来定义如何处理 WebSocket 通信,如下例所示:

interface NewsService {
@Receive
fun observeWebSocketEvent(): Flowable<WebSocket.Event>
@Send
fun sendSubscribe(subscribe: Subscribe)
@Receive
fun observeNews(): Flowable<MyNews>
}

下一步是创建 Scarlet 接口(interface)的实现并订阅 WebSocket 连接期间发出的数据流。在下面的示例中,使用了 Moshi 和 RxJava,但是 Scarlet 提供了其他方法来处理和操作数据。

val scarletInstance = Scarlet.Builder()
.webSocketFactory(okHttpClient.newWebSocketFactory(BASE_URL))
.addMessageAdapterFactory(MoshiMessageAdapter.Factory())
.addStreamAdapterFactory(RxJava2StreamAdapter.Factory())
.build()

//service created
val newsService = scarletInstance.create<NewsService>()

//define websocket event observer
newsService.observeWebSocketEvent()
.filter { it is WebSocket.Event.OnConnectionOpened<*> }
.subscribe({
newsService.sendSubscribe()
})

// news data result
newsService.observeNews()
.subscribe({ news ->
Log.d(TAG, news.toString())
})

关于android - 如何使用 Scarlet 在 Android 上通过 WebSocket 进行连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56847644/

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