Я использую узел & socketi IO для создания простой многопользовательской игры. Когда новый клиент присоединяется, я создаю новый элемент HTML с идентификатором, который является каждым клиентом socket.id.Узел/Socket IO Несколько игроков
Клиенты являются мобильными устройствами, и когда они перемещаются, я отправляю значения «deviceorientation», надеясь дать каждому клиенту контроль над одним из HTML-элементов. Я делаю что-то неправильно, хотя, что я не могу понять, поскольку все, что происходит, - это все клиенты, которые борются за контроль над самым новым элементом HTML, вместо того, чтобы управлять элементом HTML со своим собственным идентификатором сокета.
На сервере:
servio.on('connection', function (socket) {
servio.sockets.emit('newplayer',socket.id);
socket.on('move', function(data) {
socket.broadcast.emit('clientmove', data);
console.log(data.myid);
});
});
На клиенте:
iosocket.on('newplayer', function(data) {
myid = data;
$('body').append('<div class="dot _jsDot" id="'+myid+'"></div>');
});
window.addEventListener("deviceorientation", handleOrientation, true);
function handleOrientation(event) {
var absolute = event.absolute;
var alpha = event.alpha;
var beta = event.beta;
var gamma = event.gamma;
vals = {
betaVal : beta,
gammaVal : gamma,
myid : myid
}
iosocket.emit('move', vals);
}
iosocket.on('clientmove', function(data) {
var x = Math.round(data.gammaVal)*3;
var y = Math.round(data.betaVal)*3;
$('#'+data.myid+'').css({'left':x + $(window).outerWidth()/2});
$('#'+data.myid+'').css({'top':y + $(window).outerHeight()/2});
});
Я надеюсь, что я что-то маленькое, а не какие-то фундаментальном испортить вид. Если кто-то более опытный с узлом & socket io может предложить некоторые советы, это было бы здорово.
Если вы посмотрите на исходный код, используя инструменты Dev в Chrome/Firefox (правой кнопкой мыши -> элемент проверки), имеют ли элементы правильные идентификаторы или все они имеют id = "undefined" или что-то в этом роде? Может быть что-то простое. –
Является ли myid глобальной переменной? Потому что это похоже на то, что вы переписываете идентификатор клиентов всякий раз, когда подключается новый клиент – user1937198