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