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

时间:2013-12-06 19:06:01

标签: node.js socket.io

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

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必须全局安装吗?

1 个答案:

答案 0 :(得分: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!
});

一些解释:

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