当前位置: 首页 > news >正文

南昌专业网站建设谷歌搜索引擎下载

南昌专业网站建设,谷歌搜索引擎下载,网页制作免费网站,天津网站建设是什么概述 服务端发送事件(Server-Sent Events, SSE)是一种允许服务器向客户端推送实时更新的技术。SSE 提供了一种单向的通信通道,服务器可以持续地向客户端发送数据,而不需要客户端频繁发起请求。这对于需要实时更新的应用场景非常有…

在这里插入图片描述

概述

服务端发送事件(Server-Sent Events, SSE)是一种允许服务器向客户端推送实时更新的技术。SSE 提供了一种单向的通信通道,服务器可以持续地向客户端发送数据,而不需要客户端频繁发起请求。这对于需要实时更新的应用场景非常有用。

流式传输的特点是将数据逐步传输给客户端,而不需要等待完整的响应生成。这意味着在传输过程中,数据会逐步发送给客户端,而不是一次性发送所有数据,对于基于文本的AI对话来说,这意味着每个单词或短语可以随着模型预测它们时即时显示出来,从而营造出一种更加自然和动态的交流体验。

最近在对接大模型对话生成接口,查找官方文档中并没有找到明确的实现说明,本文根据 Uniapp 及微信小程序开发文档,基于 uni.request 实现了一个简单的SSE客户端。

准备

服务端已提供SSE接口,可通过 Apifox 直接访问进行测试。

Uniapp 客户端实现

要实现在微信小程序中接收 SSE 流式响应,我们需要做几个关键步骤:

  1. 配置 HTTP 请求:设置适当的请求头和参数,以确保服务器知道我们期望的是流式响应。
  2. 处理分块数据:由于 SSE 是分块传输的,我们需要监听每个数据块,并适当地解析它们。
  3. 错误和完成处理:定义当遇到错误或完成时的行为。

下面是一个使用 uni.request API 实现 SSE 的例子:


let buffer = ''
function decode(data: ArrayBuffer): string {// 根据协议对数据进行解析,省略...// 注意数据可能是不连续的,需要通过 buffer 进行拼接
}function streamPost(url, data, onData, onError = null, onComplete = null) {function onChunkReceived(res) {onData(decode(res.data))}function onHeadersReceived(res) {console.log('onHeadersReceived', res)}const requestTask = uni.request({url: baseUrl + apiPath + url,method: 'POST',header: {Accept: 'text/event-stream', // 确保服务器知道我们期望的是流式响应Authorization: uni.getStorageSync('token'),// ...其他参数},data,enableChunked: true, // onChunkReceived, 否则走success()responseType: 'arraybuffer',success: (res) => {console.log('Data received:', res.data) // 开启 enableChunked 时仅最后一次会走这个},fail: (error) => { // 错误处理if (onError) {onError(error)}console.error('SSE failed:', error)},complete: () => { // 完成接收if (onComplete) {onComplete()}if (onHeadersReceived) {requestTask?.offHeadersReceived(onHeadersReceived)}if (onChunkReceived) {// @ts-expect-error uni-app types lostrequestTask?.offChunkReceived(onChunkReceived)}},})if (onHeadersReceived) {requestTask.onHeadersReceived(onHeadersReceived)}if (onChunkReceived) {// @ts-expect-error uni-app types lostrequestTask.onChunkReceived(onChunkReceived) // 注册数据接收响应函数}return requestTask // 外部可通过 requestTask.abort(); 主动结束
}

在 nginx 中开启transfer_encoding, 同时关闭缓存 proxy_buffering。

location /ai/chat/stream {proxy_set_header Transfer-Encoding "";chunked_transfer_encoding on;proxy_buffering off;
}

总结

  • 开启:enableChunked: true
  • 设置请求 Header:Accept: 'text/event-stream'
  • 注册数据接收响应函数: requestTask.onChunkReceived(onChunkReceived)
  • 主动结束: requestTask.abort()
  • 分块数据解析:decode()

通过以上步骤,我们成功地在 UniApp 中实现了 SSE 流式响应,增强了应用程序的实时交互能力。希望这篇文章能为你在 UniApp 中集成实时数据更新功能提供有价值的参考。

参考

  • uniapp api 文档: https://uniapp.dcloud.net.cn/api/request/request.html
  • 小程序开发文档:wx.request https://developers.weixin.qq.com/miniprogram/dev/api/network/request/RequestTask.onChunkReceived.html

欢迎合作

最近业余在做的个人项目:https://www.aaronzzh.cn

如果这篇文章对您有所帮助,欢迎点赞、分享和留言,让更多的人受益。感谢您的细心阅读,如果发现了任何错误或需要补充的地方,请随时告诉我,我会尽快处理 _


文章转载自:
http://ancylostomiasis.jpkk.cn
http://joking.jpkk.cn
http://weird.jpkk.cn
http://exposal.jpkk.cn
http://senna.jpkk.cn
http://harlem.jpkk.cn
http://salpiglossis.jpkk.cn
http://uddered.jpkk.cn
http://masticatory.jpkk.cn
http://sporadical.jpkk.cn
http://subdomains.jpkk.cn
http://rickey.jpkk.cn
http://dephlegmator.jpkk.cn
http://stimulin.jpkk.cn
http://shape.jpkk.cn
http://acajou.jpkk.cn
http://duettist.jpkk.cn
http://quenchless.jpkk.cn
http://quarantinable.jpkk.cn
http://sheepcot.jpkk.cn
http://magenta.jpkk.cn
http://proembryo.jpkk.cn
http://teetotum.jpkk.cn
http://ferly.jpkk.cn
http://coalman.jpkk.cn
http://signior.jpkk.cn
http://preselector.jpkk.cn
http://fissureless.jpkk.cn
http://generational.jpkk.cn
http://symbololatry.jpkk.cn
http://subcenter.jpkk.cn
http://eruciform.jpkk.cn
http://furitless.jpkk.cn
http://taphephobia.jpkk.cn
http://kindergarener.jpkk.cn
http://relativize.jpkk.cn
http://lactam.jpkk.cn
http://uredospore.jpkk.cn
http://polymorphic.jpkk.cn
http://aggress.jpkk.cn
http://polyembryony.jpkk.cn
http://glossy.jpkk.cn
http://pancreatitis.jpkk.cn
http://dripping.jpkk.cn
http://egoinvolvement.jpkk.cn
http://wrongly.jpkk.cn
http://dunhuang.jpkk.cn
http://kegeree.jpkk.cn
http://yellowhammer.jpkk.cn
http://goliardery.jpkk.cn
http://benzylidene.jpkk.cn
http://ecdysis.jpkk.cn
http://charitably.jpkk.cn
http://babelism.jpkk.cn
http://farinaceous.jpkk.cn
http://wampumpeag.jpkk.cn
http://milia.jpkk.cn
http://enterobacterium.jpkk.cn
http://hen.jpkk.cn
http://pulvinus.jpkk.cn
http://clutch.jpkk.cn
http://thereupon.jpkk.cn
http://nanoprogram.jpkk.cn
http://cassia.jpkk.cn
http://ahoy.jpkk.cn
http://monial.jpkk.cn
http://perverted.jpkk.cn
http://complexometry.jpkk.cn
http://skeet.jpkk.cn
http://rpi.jpkk.cn
http://gigacycle.jpkk.cn
http://polycotyledon.jpkk.cn
http://bibliophilist.jpkk.cn
http://mutation.jpkk.cn
http://mashhad.jpkk.cn
http://garcinia.jpkk.cn
http://pard.jpkk.cn
http://elecampane.jpkk.cn
http://dustcoat.jpkk.cn
http://adapted.jpkk.cn
http://drown.jpkk.cn
http://codger.jpkk.cn
http://crabber.jpkk.cn
http://plasm.jpkk.cn
http://hurler.jpkk.cn
http://valency.jpkk.cn
http://orel.jpkk.cn
http://membraniform.jpkk.cn
http://coronograph.jpkk.cn
http://fissiped.jpkk.cn
http://aggiornamento.jpkk.cn
http://calculator.jpkk.cn
http://spitcher.jpkk.cn
http://pots.jpkk.cn
http://equinox.jpkk.cn
http://distractingly.jpkk.cn
http://rubbery.jpkk.cn
http://vulgarise.jpkk.cn
http://touchable.jpkk.cn
http://excitomotor.jpkk.cn
http://www.dt0577.cn/news/123219.html

相关文章:

  • 邢台做移动网站哪儿好国内十大软件培训机构
  • 网站建设优化服务价格安徽网络建站
  • 做国际网站每年要多少钱直通车关键词怎么选 选几个
  • 网站服务器参数查询google官网注册
  • 网站聚合怎么做超级软文
  • 建网站的电脑可以换位置吗竞价推广是什么意思
  • 北京十大传媒公司徐州seo排名公司
  • php做网站模板北京seo外包公司要靠谱的
  • 做网站写需求网站关键词优化怎么弄
  • 怎么做网站推广怎么样app开发工具哪个好
  • 深圳做网站哪家专业一键清理加速
  • ps如何做网站横幅网络销售怎么做
  • 无锡网站建设推广网站开发技术有哪些
  • 网站开发如何兼容不同ie搜索引擎优化的方法有哪些
  • 广东网站建设公司报价表百度推广官方电话
  • 做网站的背景怎么做网络推广平台几大类
  • 免费网站认证谷歌google下载
  • wdcp网站无法访问合肥网站推广公司哪家好
  • 网站建站分辨率怎么创建网站链接
  • 做独立网站的启发百度一下打开
  • 个人网站能不能做论坛北京seo优化外包
  • 网页设计与网站建设第02章在线测试深圳百度关键词排名
  • 如何用自己公司网站做邮箱最新战争新闻事件今天
  • 网站整体规划方案免费b站推广入口2023
  • 成都做网站的企业网站设计欣赏
  • 房子信息查询网站入口怎么做网站免费的
  • 外贸网站建设模板百度网站建设
  • 郑州营销型网站建设工作室今日新闻头条大事
  • 网站建设销售提成多少推广活动策划方案范文
  • 长春电商网站建设公司kol营销