1. 什么是SSE Server-Send Events 服务器发送事件,简称SSE。服务器主动向客户端推送消息,我们常见的有 websocket (SignalR) ,SSE 也是其中一种。 SSE 是HTML5规范的一部分,该规
Server-Send Events 服务器发送事件,简称SSE。服务器主动向客户端推送消息,我们常见的有 websocket (SignalR) ,SSE 也是其中一种。
SSE 是HTML5规范的一部分,该规范非常简单,主要由两部分组成:第一部分是服务端与浏览器端的通讯协议(Http协议),第二部分是浏览器端可供javascript使用的EventSource对象。
严格意义上来说,Http协议是无法做到服务器主动向浏览器发送协议,但是可以变通下,服务器向客户端发起一个声明,我下面发送的内容将是 text/event-stream
格式的,这个时候浏览器就知道了。响应文本内容是一个持续的数据流,每个数据流由不同的事件组成,并且每个事件可以有一个可选的标识符,不同事件内容之间只能通过回车符\r
和换行符\n
来分隔,每个事件可以由多行组成。目前除了IE和Edge,其他浏览器均支持(注:摘自https://www.cnblogs.com/jesn/p/16267606.html)
implementation 'com.squareup.okhttp3:okhttp:4.10.0' implementation 'com.squareup.okhttp3:okhttp-sse:4.11.0'
val createFactory = EventSources.createFactory(okHttpClient) val eventSourceListener = object : EventSourceListener() { override fun onEvent( eventSource: EventSource, id: String?, type: String?, data: String ) { //事件接收 Logger.d(data) } override fun onFailure(eventSource: EventSource, t: Throwable?, response: Response?) { super.onFailure(eventSource, t, response) } }createFactory.newEventSource(request, eventSourceListener)
请求头需要添加
addHeader("Accept", "text/event-stream")
创建okHttpClient
val builder = OkHttpClient.Builder()builder.retryOnConnectionFailure(true)builder.connectTimeout(5, TimeUnit.MINUTES)builder.readTimeout(5, TimeUnit.MINUTES)okHttpClient = builder.build()
来源地址:https://blog.csdn.net/u010036856/article/details/131390627
--结束END--
本文标题: Android okHttp-sse 实现chatgpt逐字逐句效果
本文链接: https://lsjlt.com/news/410075.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0