2012-04-19 49 views
8

我有以下server.js运行:的node.js:socket.io VS express.static

module.exports = server; 

var express = require('express'); 
var fs = require('fs'); 

var server = express.createServer();  

var port = 58000; 
server.listen(port); 

var io = require('socket.io').listen(server); 

server.use(express.static('/', __dirname + '/../public')); 

server.use(express.logger()); 

io.on('connection', function(client){ 
    console.log('new client connected ' + client); 
    client.on('message', function(){ 
     console.log('client wants something'); 
    }); 
}); 

简单的在/公共子目录文件express.static服务器,加上socket.io功能。使用此设置,对'socket.io.js'文件的任何请求都会失败,即

http://localhost:58000/socket.io/socket.io.js 

返回404错误(未找到文件)。静态文件服务器正常工作。如果我只是简单地使用'http'模块而不是'express'(注释掉express.static和express.logger行),socket.io.js被正确地服务。我怎样才能结合这两种功能?

回答

0

请确保您拥有express.js和socket.io.js的最新版本。 我这边它的工作有很大

[email protected] 
[email protected] 
[email protected] 

否则,解决方案可能是后打电话到var io = require('socket.io').listen(server);server.use

+0

[email protected]可能不是个好主意......现在做什么工作的 – daaanipm 2012-04-19 16:01:27

+0

呵呵,其实,有一个与快递一些大麻烦@ 3,主要是路由器和中间件上,他们正在努力。如果你不打算分叉express.js,你应该限制自己的稳定版本(当前是@ 2.5.9) – Tronix117 2012-04-19 16:08:36

3

快递3.0.0(最新的)改变其API。

Here是一个非常类似于您提供响应的问题。

var express = require('express') 
    , http = require('http'); 

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

... 

server.listen(8000); 
相关问题