node.js应用程序找不到socket.io

我在app目录(和express一起)中安装了socket.io,并在index.html文件中以这种方式链接到它:

 <script src="http://localhost:8080/node_modules/socket.io/lib/socket.io.js"></script> 

这个请求我得到了404。 我仔细检查了链接,没有问题。 node.js应用程序在端口8080上运行,我不知道为什么它不工作

更新:显然这是与快递的东西。 当不使用它,我没有这个问题,socket.io工作正常。 这是他设置我的服务器文件:

 var express = require('express'), http = require('http'); var app = express(); var server = http.createServer(app); var io = require('socket.io').listen(server); app.listen(8000); 

这是前端:

 <script src="/socket.io/socket.io.js"></script> <script src="js/vendor/jquery-1.8.3.min.js"></script> <script> var socket = io.connect('http://localhost:8000'); 

另外,我把jQuery从google CDN切换到了本地,而且也没有find它

确保你已经让socket.io监听你后端的外部连接。 基本上socket.io里面有提供你的socket.io.js文件的方法,所以你应该把你的require ('socket.io').listen(app)定义到你的应用的任何路由。

正确的url是:

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

正如randunel所说。

所以,你的configuration应该是这样的:

更新为快递3.x:

 var express = require('express'), http = require('http'); var app = express(); var server = http.createServer(app).listen(8000); require('socket.io').listen(server); // Your app passed to socket.io 

服务器端

 <script src="http://localhost:8000/socket.io/socket.io.js"></script> 

不要使用整个path,它不对应于你的项目的目录结构。 只是使用

 <script src="http://localhost:8080/socket.io/socket.io.js"></script> 

顺便说一下,请确保socket.io也在8080上监听,而不仅仅是项目中的其他服务。

尝试将您的JS文件放在http://localhost:8080/javascripts/socket.io.js ,基本上就是公用文件夹的JavaScript目录。

方式是来自随机的。

 <script src="http://localhost:8080/socket.io/socket.io.js"></script> 

如果直接链接文件,则可以获取“Welcome to socket.io”消息而不是文件。 还有一个CDN的socket.io.js文件可以链接,但已经过时了,并且在新项目上不能正常工作,所以不build议这样做。