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

Bac*_*alo 1 node.js socket.io

我的服务器结构很简单.我有一个与我的应用程序处于同一级别的公共文件夹

app.js
node_modules(folder)
   express(folder)
   socket.io(folder)
public(folder)
    index.html
    js(folder)
    css(folder)
Run Code Online (Sandbox Code Playgroud)

我的应用程序如下

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!

 });
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

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

rob*_*lep 6

试试这个:

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!
});
Run Code Online (Sandbox Code Playgroud)

一些解释:

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