我正在开发一个应用程序,我需要实时通信和文件上传。我最好是通过多路复用通道的单一连接来实现。我看到websocket协议有一个扩展,允许多路复用,但我认为还没有浏览器支持,如果有..。我不知道怎么用它。
我想用java开发服务器。socketio的节点服务器在名称空间上有一个奇怪的错误,而java服务器没有正确地处理名称空间。
我想要一个简单的多路复用系统,这样我可以同时发送一些json和二进制文件。是否存在这样的东西,或者我是否需要自己创造一些东西,如果是的话。我从哪里开始?
发布于 2016-11-08 07:38:14
我想指出的一点是,复用并不是要支持多种消息格式,因为webSocket没有指定正文格式,所以它类似于HTTP,您可以发送JSON、图片、二进制.任何你想要的。
Multiplexing 是关于如何重用一个连接信道来支持多个通信(电信中类似的概念),这通常用于多个模块需要websocket通信的场景,但只允许一个连接(如SocketJS),这样我们就可以使用复用技术来拯救世界。
更多信息请参见:https://github.com/sockjs/websocket-multiplex https://www.rabbitmq.com/blog/2012/02/23/how-to-compose-apps-using-websockets/
发布于 2015-07-21 04:00:46
客户端有一些预先创建的Javascript库,包括这个:WebSocketFileTransfer。
至于服务器端解决方案,我知之甚少。我可能会选择两个websocket连接,或者使用HTML5 javascript将文件分成更小的websocket消息--这将允许psedo-通过在文件块之间发送不同的websocket消息这一事实实现多路复用。
我更喜欢Ruby,我可能会用Plezi框架编写我的应用程序(或者至少是websocket后端).但是,如果您决定通过将文件分割成块来进行伪复用,我不确定您是否还会对您提到的命名空间问题感到困扰。
编辑
我刚想到,除非你把发送的文件分成更小的块,然后重新组装,否则很难对上传过程给予反馈.
除非您正在编写自己的websocket服务器,否则在文件传输完成之前不会让您知道传入的数据,因此您无法更新客户端收到的金额。此外,如果删除连接,拆分文件可能会让您重新启动上传。
考虑到这一点,我会选择一个连接,并将每个文件分割成块数(根据您的服务器和预期用途,每100 on左右可能会有一个块)。
https://stackoverflow.com/questions/31517174
复制相似问题