Android 客户端 Nginx 推送流的混淆库服务器发送事件
Confuse Library Server Sent Event for Android Client Nginx Push Stream
我们的服务器使用Nginx作为webserver,并添加了nginx_push_stream的编译模块。之前推流用的是Restful,后来改成Websocket,但是WebSocket在客户端或服务端带宽小的时候有时会丢。 2019年,从Websocekt到Server-Sent Event(SSE)/事件源,如事件流或text/event-stream,以减少客户端或服务器的损失。
请任何人知道库事件流能够用于 android 客户端和 iPhone 客户端。
我已经用过Okhttp但是还没有准备好使用事件流,RxSSE无法使用Android完全没有反应
我希望明年 OkHttp 已经更新 OkHttp-EventSource for Android Client 也 iPhone Client
3天后,奋斗有了支持Android客户端SSE的搜索库。然后,我找到了这个博客Accessing SSE help me a lot to implementation SSE, also this the library SSE
这个 Kotlin 版本的示例实现 SSE,甚至认为库是 java 版本。
1.准备事件处理程序 source
interface DefaultEventHandler : EventHandler {
@Throws(Exception::class)
override fun onOpen() {
Log.i("open","open")
}
@Throws(Exception::class)
override fun onClosed() {
Log.i("close","close")
}
@Throws(Exception::class)
override fun onMessage(event: String, messageEvent: MessageEvent) {
Log.i("event", messageEvent.data)
}
override fun onError(t: Throwable) {
Log.e("error", t.toString())
}
override fun onComment(comment: String) {
Log.i("event", comment)
}
}
class MessageEventHandler : DefaultEventHandler {
override fun onMessage(event: String, messageEvent: MessageEvent) {
super.onMessage(event, messageEvent)
val data = messageEvent.data
Log.i("message", data)
}
}
2。实现事件源
import java.net.URI
import java.util.concurrent.TimeUnit
.....
fun initEventSource(url: String) {
val eventHandler = MessageEventHandler()
try {
val eventSource: EventSource = EventSource.Builder(handler, URI.create(url))
.reconnectTimeMs(3000)
.build()
eventSource.start()
TimeUnit.SECONDS.sleep(10)
} catch (e: Exception) {
Log.e("error", e.toString())
}
}
我希望这是从客户端到服务器的替代方法协议,而不是使用 RESTfull 或 Websocket。当服务器总是向客户端发送数据而不需要客户端请求作为流时。
我添加了使用库 SSE 的要点 https://gist.github.com/subhanshuja/9079ec9df0927b1da26ee57cf9da1f26。
我们的服务器使用Nginx作为webserver,并添加了nginx_push_stream的编译模块。之前推流用的是Restful,后来改成Websocket,但是WebSocket在客户端或服务端带宽小的时候有时会丢。 2019年,从Websocekt到Server-Sent Event(SSE)/事件源,如事件流或text/event-stream,以减少客户端或服务器的损失。
请任何人知道库事件流能够用于 android 客户端和 iPhone 客户端。
我已经用过Okhttp但是还没有准备好使用事件流,RxSSE无法使用Android完全没有反应
我希望明年 OkHttp 已经更新 OkHttp-EventSource for Android Client 也 iPhone Client
3天后,奋斗有了支持Android客户端SSE的搜索库。然后,我找到了这个博客Accessing SSE help me a lot to implementation SSE, also this the library SSE
这个 Kotlin 版本的示例实现 SSE,甚至认为库是 java 版本。
1.准备事件处理程序 source
interface DefaultEventHandler : EventHandler {
@Throws(Exception::class)
override fun onOpen() {
Log.i("open","open")
}
@Throws(Exception::class)
override fun onClosed() {
Log.i("close","close")
}
@Throws(Exception::class)
override fun onMessage(event: String, messageEvent: MessageEvent) {
Log.i("event", messageEvent.data)
}
override fun onError(t: Throwable) {
Log.e("error", t.toString())
}
override fun onComment(comment: String) {
Log.i("event", comment)
}
}
class MessageEventHandler : DefaultEventHandler {
override fun onMessage(event: String, messageEvent: MessageEvent) {
super.onMessage(event, messageEvent)
val data = messageEvent.data
Log.i("message", data)
}
}
2。实现事件源
import java.net.URI
import java.util.concurrent.TimeUnit
.....
fun initEventSource(url: String) {
val eventHandler = MessageEventHandler()
try {
val eventSource: EventSource = EventSource.Builder(handler, URI.create(url))
.reconnectTimeMs(3000)
.build()
eventSource.start()
TimeUnit.SECONDS.sleep(10)
} catch (e: Exception) {
Log.e("error", e.toString())
}
}
我希望这是从客户端到服务器的替代方法协议,而不是使用 RESTfull 或 Websocket。当服务器总是向客户端发送数据而不需要客户端请求作为流时。
我添加了使用库 SSE 的要点 https://gist.github.com/subhanshuja/9079ec9df0927b1da26ee57cf9da1f26。