如何使用ArrayBuffer / ArrayBufferView通过WebSocket发送Javascript字符串和整数数组?

时间:2019-04-05 18:40:32

标签: javascript networking websocket arraybuffer

在一个我正在努力学习的小项目中,我尝试使用Websocket连接时使用尽可能少的带宽,并且我读到,使用二进制格式比使用JSON更轻巧。通常,我将使用类似于以下内容的JSON。

客户端:

var username = 'Ben2';
var age = 24;
var currentScore = 60;
var userData = {
    Username: username,
    Age: age,
    CurrentScore: currentScore
};
socket.send(JSON.stringify(userData));

服务器端:

socket.onmessage = function(event){
    var data = JSON.parse(event.data);
    User.username = data.Username;
    User.age = data.Age;
    User.currentScore= data.CurrentScore;
}

我要解决的解决方案是发送只包含我需要的值的类型数组,而不包含字段(我将在服务器端进行处理,我知道这是非常不灵活的,并且可能会皱眉)。到目前为止,这就是我的想法。

客户端:

var username = 'Ben2';
var age = 24;
var currentScore = 60;
var data = new Uint16Array([username,age,currentScore])
socket.send(data);

服务器端:

socket.onmessage = function(event){
    var data = JSON.parse(event.data);
    User.username = data[0];
    User.age = data[1];
    User.currentScore= data[2];
}

如果我要发送的所有值都是数字,这将起作用,但是因为我使用的字符串是用户名,所以它与类型数组不兼容。在这种情况下,我将如何处理此类型数组/正确的方法,并且该方法实际上可行以帮助减少带宽吗?我可能没有完全掌握将对象转换为二进制的概念。

0 个答案:

没有答案