亚博三公
在挪动左右花式中,数据层是屏幕上显露施行的真正开首。但是,在本年早些时辰在 Tinder 中集成了 WebSocket API 时,存眷它成为了一个令东说念主头疼的问题。为了在 Android 上更搪塞地集成 WebSocket,Scarlet应时而生。
亚博色碟WebSocket 是在 Android 左右花式中杀青数据层的选项之一,尤其是在左右需要及时更新数据的情况下,举例聊天、在线多东说念主游戏和及时纲领。它在客户端和就业器之间修复双向王人集。当王人集掀开时,它们不错以低支出往还发送文本和二进制音问。本文将教寰宇如安在Android左右中快速杀青WebSocket。
美国前总统特朗普13日在佛罗里达州迈阿密一家联邦法院就“密件风波”所涉37项联邦刑事指控出庭应诉,代理律师代表特朗普提出无罪抗辩。应诉结束后,特朗普飞回新泽西州,在当晚的讲话中攻击现任总统拜登和民主党阵营对他“政治迫害”。
皇冠90比分网古特雷斯当天通过发言人发表声明指出,苏丹武装部队与快速支援部队之间爆发的冲突导致达尔富尔地区出现大规模暴力事件并造成人员伤亡,相关情况令人震惊。他强调,当地暴力事件越发显现针对族裔的特点,同时还有关于性暴力的报告,他对此表示高度担忧。
竖立要杀青 Scarlet,最初将其添加到 app/build.gradle 文献。
竞争dependencies 亚博三公{ ... // scarlet implementation 'com.tinder.scarlet:scarlet:0.1.12' }
在 Scarlet 提供的示例中,RxJava 用于匡助科罚 Web 套接字发送的数据流。在 app/build.gradle 中杀青它。
皇冠客服飞机:@seo3687dependencies { // rx implementation 'io.reactivex.rxjava2:rxjava:2.2.21' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0' }
淌若寰宇对 Coroutine 和 Kotlin Flow 的复旧感到有趣,请参阅此处:https : //github.com/Tinder/Scarlet/issues/114
目下咱们竖立的关键部分是就业。咱们不错使用websocket-echo (wss://websocket-echo.glitch.me)测试咱们的 WebSocket;
创建接口函数接下来,创建一个interface以界说与 WebSocket 通讯的函数。
interface EchoService { @Receive fun observeConnection(): Flowable<WebSocket.Event> @Send fun sendMessage(param: String) }
如上所示,就业接口看起来与修订绝顶一样。寰宇不错使用@Receive注解来不雅察来自 WebSocket 的数据流,并用于@Send向WebSocket发送或订阅数据。
竖立好就业后,欧博在线登录咱们不错不时在咱们的举止中杀青就业;在这种情况下,我莫得使用任何架构,仅仅在Activity中杀青了就业。
class MainActivity : AppCompatActivity() { ... private fun setupWebSocketService() { webSocketService = provideWebSocketService( scarlet = provideScarlet( client = provideOkhttp(), lifecycle = provideLifeCycle(), streamAdapterFactory = provideStreamAdapterFactory(), ) ) } private fun provideWebSocketService(scarlet: Scarlet) = scarlet.create(EchoService::class.java) private fun provideScarlet( client: OkHttpClient, lifecycle: Lifecycle, streamAdapterFactory: StreamAdapter.Factory, ) = Scarlet.Builder() .webSocketFactory(client.newWebSocketFactory(ECHO_URL)) .lifecycle(lifecycle) .addStreamAdapterFactory(streamAdapterFactory) .build() private fun provideOkhttp() = OkHttpClient.Builder() .addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BASIC)) .build() private fun provideLifeCycle() = AndroidLifecycle.ofApplicationForeground(application) private fun provideStreamAdapterFactory() = RxJava2StreamAdapterFactory() ... }测试
目下咱们不错通过向 WebSocket 发送一些东西来测试下代码。WebSocket 将在它们检索时发送斟酌的音问。
博彩捕鱼在线博彩网站大全class MainActivity : AppCompatActivity() { ... private fun sendMessage(message: String) { webSocketService.sendMessage(message) adapter.addItem(Message(message = message, isFromSender = true)) } @SuppressLint("CheckResult") private fun observeConnection() { webSocketService.observeConnection() .observeOn(AndroidSchedulers.mainThread()) .subscribe({ response -> Log.d("observeConnection", response.toString()) onReceiveResponseConnection(response) }, { error -> Log.e("observeConnection", error.message.orEmpty()) Snackbar.make(binding.root, error.message.orEmpty(), Snackbar.LENGTH_SHORT).show() }) } private fun onReceiveResponseConnection(response: WebSocket.Event) { when (response) { is OnConnectionOpened<*> -> changeToolbarTitle("connection opened") is OnConnectionClosed -> changeToolbarTitle("connection closed") is OnConnectionClosing -> changeToolbarTitle("closing connection..") is OnConnectionFailed -> changeToolbarTitle("connection failed") is OnMessageReceived -> handleOnMessageReceived(response.message) } } private fun handleOnMessageReceived(message: MessageScarlet) { adapter.addItem(Message(message.toValue(), false)) binding.etMessage.setText("") } private fun MessageScarlet.toValue(): String { return when (this) { is Text -> value is Bytes -> value.toString() } } ... }追念
这即是本文询查的一齐施行。Scarlet 是一个很棒的库,可让寰宇侦查在 Android 左右花式中杀青 WebSocket。寰宇不错通过以上教程搪塞为我方的左右竖立 Scarlet ,绝顶是淌若也曾熟识 Retrofit 等器具。
太平洋在线娱乐博彩是一项需要技巧和经验的运动,但是博彩不是赌博,只有真正的博彩爱好者才能赢得胜利。皇冠体育欢迎你加入我们的行列,与我们一起体验博彩的精髓和乐趣。