socket.IO-为什么我的客户端html页面不能加载socket.io.js?

我的服务器结构很简单。 我有一个与我的应用程序相同的公共文件夹

app.js node_modules(folder) express(folder) socket.io(folder) public(folder) index.html js(folder) css(folder) 

我的应用程序如下

 var sys = require('sys'), express = require('express'), app = express.createServer('127.0.0.1'), io = require('socket.io'); app.use(express.static(__dirname + '/public')); app.get('/', function (req, res) { res.send('Hello World'); }); app.listen(3000); var socket = io.listen(app); socket.on('connection', function (client){ // new client is here! }); 

而我的HTML页面(简体)是

 <html> <p id="text">socket.io</p> <script src="/socket.io/socket.io.js"></script> <script type="text/javascript" src="js/lib/jquery-1.4.2.min.js"></script> </html> 

当我运行服务器并加载我的index.html时,找不到socket.io.js,会产生一个404错误。 是什么赋予了? 在我的情况下,socket.IO必须全局安装?

尝试这个:

 var sys = require('sys'), express = require('express'), app = express(), io = require('socket.io'); app.use(express.static(__dirname + '/public')); app.get('/', function (req, res) { res.send('Hello World'); }); var server = app.listen(3000); var socket = io.listen(server); socket.on('connection', function (client){ // new client is here! }); 

一些解释:

  • express.createServer已弃用,Express 3运行express()来实例化Express;
  • io.listen应该传递一个http.Server实例,而你传递一个Express实例(一个http.Server实例被app.listen(...)返回);
  • 没有必要把socket.io.js文件放在任何地方; socket.io会安装一个处理该文件请求的处理程序,并自动提供它。