Node.js socket.io远程客户端不工作

Node.js socket.io远程客户端不工作,node.js,express,socket.io,Node.js,Express,Socket.io,我正在尝试使用socket.io将本地计算机上的Chrome浏览器连接到远程节点服务器。我使用expressjs从我的节点服务器提供所有文件,因此我有一个包含html和js文件的公共目录(我在我从npm获得的node_模块下创建了一个指向socket.io文件的符号链接) 我遇到的问题是,当Chrome拉取我的index.html时,我会出现以下错误: 未捕获引用错误:未定义require socket.io.js:12 未捕获引用错误:未定义io 我像其他几个帖子一样尝试了cdn,但这导致了另

我正在尝试使用socket.io将本地计算机上的Chrome浏览器连接到远程节点服务器。我使用expressjs从我的节点服务器提供所有文件,因此我有一个包含html和js文件的公共目录(我在我从npm获得的node_模块下创建了一个指向socket.io文件的符号链接)

我遇到的问题是,当Chrome拉取我的index.html时,我会出现以下错误:

未捕获引用错误:未定义require socket.io.js:12 未捕获引用错误:未定义io

我像其他几个帖子一样尝试了cdn,但这导致了另一个问题。很多帖子都提倡这种方法,所以我不知道为什么它不能解决nodejs问题。有什么想法吗

下面是my index.html的外观:

<html>
<head>
</head>
<body>
<script src="http://nodeserver:8080/socket.io/lib/socket.io.js"></script>

<script>
  var socket = io.connect('http://nodeserver:8080');
  socket.on('', function (data) {
    console.log(data);
    socket.emit('update checkins', { my: 'data' });
  });
</script>
<h2>Test Page</h2>
</body>
</html> 

问题是,我让原始代码监听app对象,但当我更新代码以添加套接字时,我忽略了将其更改为server.listen,如下所示:

server.listen(port, ipaddr, function () {
    console.log('%s: Foursquare Node server started on %s:%d ...', Date(Date.now()),
        ipaddr, port);
});
这样我就可以简单地将脚本包括以下内容,而不必复制billy指出的任何内容:

<script src="/socket.io/socket.io.js"></script>


在客户端,您应该使用由socket.io服务器提供服务的
客户端js。什么意思是由socket.io服务器提供服务?我发现我必须显式地将socket.io-client/dist/socket.io.js文件放在我的公共目录中,这样我就不会得到404。这就是您正在做的吗?不,您不必复制公共目录中的socket.io文件。socket.io应该用它的客户机文件响应
/socket.io/socket.io.js
:有一个工作示例OK,我明白了…需要server.listen而不是app.listen。更新答案。。。
<script src="/socket.io/socket.io.js"></script>