我需要有多个(5~100)Android客户端拍照并同时通过本地网络将它们发送到nodejs服务器,每张图片的大小约为2~10mb。因为我有很多客户端同时上传文件,我需要尽可能快地进行这些操作,因为它们的开销小于纯HTTP的开销,所以websockets似乎是一个很好的意识形态。
我有点迷失在如何从android客户端发送块上传以及如何在nodejs服务器中重建这些块(我正在使用socket.io)。我找到了一些例子,但它们似乎在一个块中接收整个文件,这对于我期待的大文件没有意义。我甚至会欣赏一些抽象的解释或伪代码。
答案 0 :(得分:1)
根据RFC 6455,一个WebSocket二进制消息可以包括(1)一个二进制帧或(2)一个二进制帧和后续的连续帧(有关详细信息,请参阅5.4. Fragmentation)。因此,当您从Android发送大二进制数据时,将数据分成一个二进制帧和多个连续帧,然后将它们逐个发送到服务器。服务器将收集分割的帧并自动构造一个二进制消息。
为此,您必须使用WebSocket客户端库,该库提供手动发送延续帧的方法。 nv-websocket-client (我的工作)就是这样一个图书馆。
来自nv-websocket-client的README的以下代码是发送由一个文本框架和两个连续框架组成的文本消息("How are you?"
)的示例。您可以对二进制消息执行相同的操作。
ws.sendText("How ", false)
.sendContinuation("are ")
.sendContinuation("you?", true);