Bre*_*rty 3 javascript json node.js socket.io
我正在尝试将对象从一个客户端传递到另一个客户端,例如多人棋盘游戏中的棋子.我有使用工作的解决方案JSON.parser和__proto__,但我很好奇,想知道是否有更好的方法.
客户发送:
var my_piece = new BoardPiece();
// ... my_piece is assigned data, like x-y coordinates
socket.send(JSON.stringify(my_piece));
Run Code Online (Sandbox Code Playgroud)
服务器将该片段转发给其他人:
client.broadcast(piece);
Run Code Online (Sandbox Code Playgroud)
另一位客户收到:
var your_piece = JSON.parse(json);
your_piece.__proto__ = BoardPiece.prototype; // provide access to BoardPiece's functions
Run Code Online (Sandbox Code Playgroud)
这是我使用的最后一步,我__proto__担心我可能会在脚下射击自己.有更好的建议吗?
// clientone.js
var piece = new BoardPiece();
// ...
socket.send(JSON.stringify(piece));
// clienttwo.js
var piece = BoardPiece.Create(JSON.parse(json));
...
// BoardPiece.js
function BoardPiece() {
}
BoardPiece.prototype.toJSON = function() {
var data = {};
data.foo = this.foo;
...
return data;
};
BoardPiece.Create = function(data) {
var piece = new BoardPiece();
piece.foo = data.foo;
...
return piece;
}
Run Code Online (Sandbox Code Playgroud)
首先toJSON在对象上使用该方法允许JSON.stringify立即将对象转换为JSON.这是JSON API的一部分.toJSON如果方法存在,JSON API将调用该方法并将该对象转换为JSON.
这基本上允许您根据需要序列化对象.
第二部分是添加一个工厂方法作为构造函数的属性,它接收序列化的JSON数据并创建一个新的元件.然后它会将您的序列化数据注入该板件对象.
因此,您只序列化您关心的数据,然后通过工厂方法传递该数据.这是将自定义对象从一个客户端发送到另一个客户端的最佳方法.
| 归档时间: |
|
| 查看次数: |
4786 次 |
| 最近记录: |