通过node.js/express将socket.io javascript文件提供给客户端

fie*_*lds 1 websocket node.js express socket.io

我正在尝试使用socket.io和express进行示例客户端连接(具体来说,这个:http://www.catonmat.net/blog/nodejs-modules-socketio/,其中一些来自https的其他示例)://github.com/LearnBoost/socket.io/blob/master/examples/chat/app.js).

我已经完成了大部分设置和工作 - 服务器运行,我可以点击/获取index.jade文件到浏览器.但是,一旦发生这种情况,它什么都不做.

服务器:

var io = require('socket.io');
var express = require('express')
, stylus = require('stylus')
, nib = require('nib');

var app = express.createServer()
var io = io.listen(app);

app.configure(function () {
  app.use(stylus.middleware({ src: __dirname + '/public', compile: compile }));
  app.use(express.static(__dirname + '/public'));
  app.set('views', __dirname);
  app.set('view engine', 'jade');

  function compile (str, path) {
    return stylus(str)
      .set('filename', path)
      .use(nib());
  };
});

app.get('/', function (req, res) {
  res.render('index', { layout: false });
});


app.listen(8080);

io.sockets.on('connection', function (socket) {
  console.log('A socket connected!');
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
  socket.on('disconnect', function () {
    console.log('user disconnected');
  });
});
Run Code Online (Sandbox Code Playgroud)

index.jade:

doctype 5
html
  head
    link(href='/stylesheets/style.css', rel='stylesheet')
    script(src='http://code.jquery.com/jquery-1.6.1.min.js')
    script(src='/socket.io/socket.io.js')
    script
      // socket.io specific code
      var socket = io.connect('http://localhost:8080');
      socket.on('connect', function () {
        alert('connected');
      });
      socket.on('news', function (data) {
          console.log(data);
          socket.emit('my other event', { my: 'data' });
        });
  body
    #chat
Run Code Online (Sandbox Code Playgroud)

看来服务器没有服务于/socket.io/socket.io.js(http:// localhost:8080/socket.io/socket.io.js产生错误).我需要做什么来快递才能提供该文件?我在任何一个例子中都找不到.

还有什么我在这里做错了吗?

Nat*_*ano 9

在Express 3中使用Socket.IO要求您实例化a http.Server以将socket.io附加到:

var express = require('express')
  , http = require('http')
  , app = express()
  , server = http.createServer(app).listen(3000)
  , io = require('socket.io').listen(server)
  ;
Run Code Online (Sandbox Code Playgroud)

这应该适合你.