WebSocket多部分/表单数据模拟是可能的



是否有可能发送带有二进制数据的json文本?

我称之为多部分/表单数据,因为在html表单中,我们可以用二进制文件发送文本,如何对websocket进行同样的处理,这可能吗?

这里有一个例子:

var arrayBuffer = new ArrayBuffer();
// lets say here we fill our array buffer with binary data in the browser
// so here we got 2 ways
// 1) First we can send the json text indicating that the next request will be a binary data file
// so using this way the next request will have ready an Id for the uploaded file if we are working
// with database
var obj = {};
obj.somedata = "hello This is a name for my item";
websocket.send(JSON.stringify(obj)); //first sending the text
websocket.send(arrayBuffer); //sending the binary data file

// 2) Second, This is the way I prefer most, but I don't know if this is possible
// we send a json object 
var obj = {};
obj.somedata = "hello This is a name for my item";
obj.file = arrayBuffer;
websocket.send(JSON.stringify(obj));

但问题是,我无法将二进制数据放入文本json中,二进制数据会以这种方式损坏,在服务器端我使用的是java。。。因为我认为使用两个请求发送文件和输入文本数据不是一个好方法,有什么提示吗?

如果服务器无法处理二进制数据(这可能是配置或程序的问题,我以这种方式发送二进制数据没有问题),那么您可以用base64对数据进行编码或将其转义为json。但最好的方法是修复服务器端。。。

如果你想用base64的方式,看看这个:https://github.com/niklasvh/base64-arraybuffer,例如:Java 中的Base64编码

相关内容

  • 没有找到相关文章