socket.io - сокет не определен только на клиенте - PullRequest
0 голосов
/ 17 октября 2018

Я запускаю два экземпляра socket.io на моем локальном компьютере (два пространства имен).Проблема заключается в том, что при попытке подключения со стороны клиента (к любому пространству имен) я получаю следующую ошибку:

Uncaught ReferenceError: socket is not defined

Я проверил это безпользовательские пространства имен и такая же проблема возникла.Со стороны сервера все в порядке, поскольку я могу генерировать события.

Код клиента выглядит следующим образом:

Клиент

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js"></script>

<script>
var socketOptions           = {};
socketOptions.transports    = ['polling'];
var client                  = new PlayClient();

var playSocket  = io.connect('http://localhost:8044/clients', socketOptions);

playSocket.on('connect', function(socket) {
    console.clear();
    console.info("CLIENT: Connected.");

    socket.on("client:change scene", function(newSceneId) {
        console.log(newSceneId);
        client.changeScene(newSceneId);
    });

});
</script>

ПохожеЯ просто переписал сокет.Итак, основные неполадки привели меня к этому ответу , подтолкнувшему меня к тому, чтобы подтвердить это. Однако, прохождение (data) или что-то еще вместо этого все еще оставляет socket неопределенным, но с консолью, которая объявляет: TypeError: undefined.

Если я изменю .on('connect') на .on('connection'),сокет больше не перезаписывается, но не может подключиться или получить какие-либо отправленные события, потому что socket.io client не понимает событие 'connection' .

Любая помощь сэто очень ценится, так как я, кажется, попал в круговую колею.

1 Ответ

0 голосов
/ 17 октября 2018

вы, кажется, путаете события на стороне сервера и на стороне клиента;они довольно разные.каждый клиентский объект может быть подключен только к одному серверу, в то время как сервер может принимать много подключений

, возможно, попробовать что-то вроде:

var playSocket  = io.connect('http://localhost:8044/clients', socketOptions);

playSocket.on('connect', function() {
    console.clear();
    console.info("CLIENT: Connected.");
}

playSocket.on("client:change scene", function(newSceneId) {
    console.log(newSceneId);
    client.changeScene(newSceneId);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...