小程序
小游戏
企业微信
微信支付
扫描小程序码分享
7 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
为什么真机情况下我的onChunkReceived只触发了一次,而且一次就接受了全部的分块数据呢?
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
可以考虑一下,真机连接的后端的相关sse接口有没有禁用nginx缓存,需要手动禁用缓存。可以参考: # 设置 Nginx 不对 SSE 响应进行缓冲,直接透传给客户端 proxy_buffering off; # 设置代理读取服务器响应的超时时间 proxy_read_timeout 24h; # 设置客户端连接的超时时间 proxy_connect_timeout 1h; # 设置 HTTP 版本,SSE 需要 HTTP/1.1 proxy_http_version 1.1; # 保持连接活性,不发送连接关闭的信号 proxy_set_header Connection ''; # 配置代理传递的头部,确保 Host 头部正确传递 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 设置代理的响应头部,保持传输编码为 chunked proxy_set_header X-Accel-Buffering no; # 设置流式响应头 proxy_set_header Accept "text/event-stream"; proxy_set_header Cache-Control "no-cache"; # 禁用压缩 proxy_set_header Accept-Encoding ""; # 设置跨域资源共享 (CORS) add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Headers' 'Origin,Authorization,Accept,X-Requested-With,Content-Type' always;
一样的情况,卡发半天完成后发现手机实机和开发工具上不一样,开发工具上的返回数据在 requestTask = wx.request() 的 .onChunkRecived() 的回调函数里面一块一块地处理,但实机上是在wx.request() 的 complete() 和 success() 回调函数里面一次性处理。我真服了,这不白开发了?搞半天了!
RequestTask.onChunkReceived本地环境一个字一个字展示,真机就是一整段展示?
同样的问题,用IP就模拟器,真机都会一点一点的展示。使用域名就模拟器正常,真机就整个输出完才展示.
目前我找到的解决方案是,将流式输出增加header头 X-Accel-Buffering: no 让代理服务器不缓存流式输出内容。目前我的问题解决了。不知道是不是适用大家的问题。
请问有发现真机onChunkReceived后台数据丢失的问题吗?我现在遇到了,没找到解决办法。
我也遇到了,楼主解决了吗?
本回答由AI生成,可能已过期、失效或不适用于当前情形,请谨慎参考
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
为什么真机情况下我的onChunkReceived只触发了一次,而且一次就接受了全部的分块数据呢?
可以考虑一下,真机连接的后端的相关sse接口有没有禁用nginx缓存,需要手动禁用缓存。可以参考: # 设置 Nginx 不对 SSE 响应进行缓冲,直接透传给客户端 proxy_buffering off; # 设置代理读取服务器响应的超时时间 proxy_read_timeout 24h; # 设置客户端连接的超时时间 proxy_connect_timeout 1h; # 设置 HTTP 版本,SSE 需要 HTTP/1.1 proxy_http_version 1.1; # 保持连接活性,不发送连接关闭的信号 proxy_set_header Connection ''; # 配置代理传递的头部,确保 Host 头部正确传递 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 设置代理的响应头部,保持传输编码为 chunked proxy_set_header X-Accel-Buffering no; # 设置流式响应头 proxy_set_header Accept "text/event-stream"; proxy_set_header Cache-Control "no-cache"; # 禁用压缩 proxy_set_header Accept-Encoding ""; # 设置跨域资源共享 (CORS) add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; add_header 'Access-Control-Allow-Headers' 'Origin,Authorization,Accept,X-Requested-With,Content-Type' always;一样的情况,卡发半天完成后发现手机实机和开发工具上不一样,开发工具上的返回数据在 requestTask = wx.request() 的 .onChunkRecived() 的回调函数里面一块一块地处理,但实机上是在wx.request() 的 complete() 和 success() 回调函数里面一次性处理。我真服了,这不白开发了?搞半天了!
RequestTask.onChunkReceived本地环境一个字一个字展示,真机就是一整段展示?
同样的问题,用IP就模拟器,真机都会一点一点的展示。使用域名就模拟器正常,真机就整个输出完才展示.
目前我找到的解决方案是,将流式输出增加header头 X-Accel-Buffering: no 让代理服务器不缓存流式输出内容。目前我的问题解决了。不知道是不是适用大家的问题。
请问有发现真机onChunkReceived后台数据丢失的问题吗?我现在遇到了,没找到解决办法。
我也遇到了,楼主解决了吗?