Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[功能请求] 关于 WebSocket 上传实现 #737

Closed
bunnyi116 opened this issue Sep 11, 2023 · 2 comments
Closed

[功能请求] 关于 WebSocket 上传实现 #737

bunnyi116 opened this issue Sep 11, 2023 · 2 comments

Comments

@bunnyi116
Copy link

bunnyi116 commented Sep 11, 2023

在WebSocket 文档 (多媒体内容上传)(#474)中得知websocket 的文件上传涉及到 socket 阻塞还未实现。

考虑到WebSocket阻塞当前线程的正常收发消息的问题,可以使用新的WebSocket连接进行上传文件,这样就不会阻塞当前的WebSocket。

实现

主 WebSocket 客户端在准备上传文件,那么使用当前的会话信息与 WebSocket 服务端建立起上传文件专属通道,该通道只进行文件数据的传输,参考 (创建连接)文档,可以添加一个 file 或 stream 类型,该通道用于文件数据传输,

传输格式就与Http数据格式一样就行,请求正文头部内容携带上传文件的信息Http多媒体内容上传,类型,文件名,文件总长度,然后先发送,之后文件使用文件流进行上传,然后客户端根据文件长度接收文件Stream,上传结束后正常响应信息描述是否成功,然后关闭该通道。这样就不存在阻塞主ws客户端的正常收发了

@bunnyi116
Copy link
Author

bunnyi116 commented Sep 11, 2023

这个实现对 #732 建议在客户端中需要特殊支持,客户端适配器接口需要编写一个专门用于上传文件的方法,然后适配器进行重写,比如:WebSocket适配器就重写这个方法,然后与服务端建立传输文件的新连接发送。

服务端只需要对客户端文件传输通道建立进行管理就行

@bunnyi116 bunnyi116 changed the title [接口建议] 关于 WebSocket 上传实现 [功能请求] 关于 WebSocket 上传实现 Sep 11, 2023
@ryoii
Copy link
Collaborator

ryoii commented Nov 27, 2023

使用额外的 websocket 上传和使用 http 上传没有区别

现在解决方案:在 ws adapter 中开放多媒体上传的 HTTP 接口,无需单独开启 http adapter。发布于 2.10.0

@ryoii ryoii closed this as completed Nov 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants