在一个我正在努力学习的小项目中,我尝试使用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];
}
如果我要发送的所有值都是数字,这将起作用,但是因为我使用的字符串是用户名,所以它与类型数组不兼容。在这种情况下,我将如何处理此类型数组/正确的方法,并且该方法实际上可行以帮助减少带宽吗?我可能没有完全掌握将对象转换为二进制的概念。