Node.js - 使用多个html文件连接到同一服务器,同一用户

时间:2016-10-06 07:09:07

标签: javascript html node.js html5 socket.io

我想要做的是将我的HTML5画布游戏集成到一个网络界面中。

按下按钮时,html游戏会填满<div id="game">。但是我只在我的javascript文件中定义了我的node.js.

现在我可以在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 个答案:

答案 0 :(得分:2)

可能你不能这样做。

如果有任何其他窗口,您将需要连接套接字。 但是,您可以在服务器上使用 ChatRooms 的概念同步它们,只需添加来自会议室中用户的所有连接池。

<强> ####编辑###

您可以简单地将套接字连接加入聊天室:

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

然后简单地向该会议室成员广播一条消息:

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

您可以简单地使用Room-names与某个用户身份相对应。

参考:http://socket.io/docs/rooms-and-namespaces/#