Javascript Nodejs、express和socket.io在两个静态客户端页面之间通信

Javascript Nodejs、express和socket.io在两个静态客户端页面之间通信,javascript,node.js,sockets,express,socket.io,Javascript,Node.js,Sockets,Express,Socket.io,我正在尝试使用nodejs、express和socket.io为画廊构建一个远程设备 结构如下 /index.js /public/screen.html /screen.js /remote.html /remote.js 我们的想法是在remote.html上显示一个图像库,选择一个,然后使用socket.io将所选索引发送到screen.html 到目前为止,我的代码如下所示: index.js remote.js screen.js 从node

我正在尝试使用nodejs、express和socket.io为画廊构建一个远程设备

结构如下

/index.js
/public/screen.html
       /screen.js
       /remote.html
       /remote.js
我们的想法是在remote.html上显示一个图像库,选择一个,然后使用socket.io将所选索引发送到screen.html

到目前为止,我的代码如下所示:

index.js

remote.js

screen.js

从node index.js开始,我得到

当加载screen或remote.html时

debug - client authorized
info  - handshake authorized MwtGFRCZamcyKkUpK5_W
在我看来:某种程度上建立了联系,但是:

两端均未发送/接收任何消息 没有将连接事件的日志打印到控制台


知道为什么什么都没有发生吗?

看来您已经将服务器端代码混合到了客户端中。“连接”事件是需要在服务器上侦听的事件,而不是您的客户端文件。此外,不能从服务器端代码直接调用客户端函数。 以下代码不起作用:

server.listen(8080, function(){
// setup image gallery and stuff...
connectToServer();
});
要实现上述目标,您需要在服务器上安装以下代码:

server.listen(8080, function(){
  socket.on('connection', function (socket) {
    // setup image gallery and stuff...
    socket.emit('connectToServer', myPassedParameters);
  });
});
以及客户端上该事件的以下侦听器:

socket.on('connectToServer', function (myPassedParameters) {
    var text = document.querySelector('#name');
      // stuff for client side here
    });
});
除上述内容外,您不能使用socket.io从一个客户机文件调用另一个客户机文件。您必须首先调用服务器,然后在为用户加载另一个文件后调用该文件上的函数

debug - client authorized
info  - handshake authorized MwtGFRCZamcyKkUpK5_W
server.listen(8080, function(){
// setup image gallery and stuff...
connectToServer();
});
server.listen(8080, function(){
  socket.on('connection', function (socket) {
    // setup image gallery and stuff...
    socket.emit('connectToServer', myPassedParameters);
  });
});
socket.on('connectToServer', function (myPassedParameters) {
    var text = document.querySelector('#name');
      // stuff for client side here
    });
});