Node.js — Подключение к одному и тому же серверу, одному и тому же пользователю, с использованием нескольких HTML-файлов

#javascript #node.js #html #socket.io

#javascript #node.js #HTML #socket.io

Вопрос:

То, что я пытаюсь сделать, это интегрировать мои игры на HTML5 canvas в единый веб-интерфейс.

При нажатии кнопки html-игра заполняется <div id="game"> . Но я только определил свой node.js в моем файле javascript.

Теперь я, вероятно, могу определить его также в файле HTML2, но, похоже, он создаст 2 отдельных соединения.

Есть ли способ сделать это, имея только 1 соединение?

Проще говоря — 2 отдельных файла HTML / javascript с одинаковым точным подключением

Спасибо

HTML

 <div id="game">
    <button id="gameFile">MyGame</button>
</div>
  

Javascript

 var socket = io('http://192.168.0.5:2000');

socket.on('connect', function() {
    socket.emit('login', {

    });
});
$('#gameFile').click(function(event){
     document.getElementById("game").innerHTML='<object type="text/html" data="games/myGame/index.html" style="width:100%; height: 100%;" ></object>';
});
  

HTML2 (games/myGame/index.html )

 <canvas id="myCanvas">
    Your browser does not support the HTML5 canvas tag :(
</canvas>
<script>
    socket.emit('msg', "2nd HTML connected");
</script>
  

Комментарии:

1. Ваша постановка проблемы противоречива. У вас будет 1 веб-приложение с 2 представлениями или 2 отдельных веб-приложения?

2. Извините. 2 отдельных приложения просматриваются одновременно. Это отдельное представление html, встроенное в общий html.

3. Разве вы не можете использовать sessionId для определения и присоединения к одной комнате? нравится, socket.on('connection', function (socket) {socket.join(socket.handshake.sessionID);}); ?

4. 2-й отдельный HTML-код находится внутри <div id="game"> тега

5. @DavidR Я думаю, что это именно то, что я ищу. Есть ли шанс, что вы могли бы дать небольшой краткий пример? Я вроде как любитель

Ответ №1:

Возможно, вы не можете просто так поступить.

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

####Редактировать###

Вы можете просто подключить сокет-соединение к чату :

 io.on('connection', function(socket){
  socket.join('some room');
});
  

Затем просто передайте сообщение членам этой комнаты:

 io.to('some room').emit('some event'):
  

Вы можете просто использовать имена комнат, соответствующие некоторому идентификатору пользователя.

Ссылка: http://socket.io/docs/rooms-and-namespaces /#

Комментарии:

1. Здравствуйте, спасибо за ваш ответ. Есть ли шанс, что вы можете предоставить краткий пример своего ответа, чтобы я лучше понял визуально? Спасибо

2. Вы можете просто подключить сокет-соединение к комнате чата: io.on(‘connection’, function(socket){ socket.join(‘some room’); }); Затем просто передать сообщение членам этой комнаты: io.to («немного места»).испускать (‘какое-то событие’): вы можете просто использовать имена комнат, соответствующие некоторому идентификатору пользователя. Ссылка: socket.io/docs/rooms-and-namespaces /#