Я создаю игру, используя socket io. Игрок соединяется так:Socket IO - Socket.emit отправляется всем клиентам
var playerName = document.getElementById("name").value;
socket.emit('setup player', {
name : playerName
});
Затем на сервере, игрок настроен и его информация отправляется обратно клиенту:
function onSetupPlayer(data) {
...
var newPlayer = new Player(x, y, color, data.name,
this.id, scale);
socket.emit('setup game', {
localPlayer : newPlayer
});
...
sockets[this.id] = socket;
}
Следующий вызов:
socket.emit('setup game', {
localPlayer : newPlayer
});
Следует отправить данные настройки только обратно клиенту, который запросил установку, которая будет выполнена изначально. Однако вызов настройки посылается всем в фойе.
Может ли это иметь какое-либо отношение к тому факту, что я использую localhost для его проверки? Я также тестирую его на одной машине, используя разные вкладки. Если это то, что вызывает проблему, есть ли способ ее решения? Так как это довольно раздражает при тестировании моей игры.
EDIT: Инициализация:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var socket = require('socket.io')(http);
var path = require('path');
var io = require('socket.io')(80);
...
var setEventHandlers = function() {
socket.sockets.on("connection", onSocketConnection);
};
Прослушивание для подключения:
function onSocketConnection(client) {
...
client.on("setup player", onSetupPlayer);
...
};
А на стороне клиента, у меня есть это:
var setEventHandlers = function() {
socket.on("setup game", onSetupGame);
...
}
Я получаю сообщение об ошибке: ИО не определен – TastyLemons
вара Io = требуется («Socket.io») (80) – trquoccuong
Wil это все еще работает, когда я загрузить на сервер. Или только для местного хозяина? – TastyLemons