Я пытаюсь реализовать простую игру на javascript и сервер WebSocket для игры.Мой вопрос о сервере WebSocket.
Код, который я реализовал, находится здесь.
class Game{
constructor(){
this.GRID_SIZE = 20;
this.MAP_EDGE_RECTANGLE_COUNT = 1000;
}
init(){
this.createMap();
this.apple = [];
}
createMap(){
this.map = [];
// set map rows and columns
for(var i = 0; i < this.MAP_EDGE_RECTANGLE_COUNT; i++) {
this.map[i] = [];
for(var j = 0; j < this.MAP_EDGE_RECTANGLE_COUNT; j++){
var obj = new Object();
obj.row = i;
obj.column = j;
this.map[i][j] = obj;
}
}
// set walls
for(var i = 0; i < this.MAP_EDGE_RECTANGLE_COUNT; i++){
this.map[0][i].name = 'wall';
this.map[i][0].name = 'wall';
this.map[this.MAP_EDGE_RECTANGLE_COUNT -1][i].name = 'wall';
this.map[i][this.MAP_EDGE_RECTANGLE_COUNT -1].name = 'wall';
}
// set foods
for(var i = 0; i < 10 * this.MAP_EDGE_RECTANGLE_COUNT; i++){
var index1 = Math.floor(Math.random() * this.MAP_EDGE_RECTANGLE_COUNT);
var index2 = Math.floor(Math.random() * this.MAP_EDGE_RECTANGLE_COUNT);
this.map[index1][index2].name = 'foods';
this.map[index2][index1].name = 'foods';
}
}
}
const game = new Game();
game.init();
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) {
console.log("a client connected:");
console.log("CONNECTED");
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
var counter = 0;
var interval = setInterval(function(){1
console.log('sending message to client');
ws.send('{"map:"' + game.map + '}');
}, 1000 / 10);
ws.on("close", function(ev) {
clearInterval(interval);
console.log('connection error with a client');
});
});
Как видите, в коде есть объект карты, который хранит все состояния игровых сеток.И у меня есть интервал, чтобы передать текущее состояние карты всем клиентам.Но отправка всех картографических данных клиентам вызывает проблемы с качеством в моем игровом интерфейсе (проблема с отправкой коротких данных).Поэтому мне нужно отправить минимальное количество данных моему клиенту.
Теперь, каков механизм запуска этих игр и какой тип данных мне следует отправлять?