Node.js的:socket.io VS express.static(node.js: sock

2019-06-23 18:32发布

我有以下server.js运行:

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.static和express.logger线)socket.io.js正确送达。 我怎样才能结合两种功能?

Answer 1:

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

这里是你的差不多,提供响应的问题。

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);


Answer 2:

请确保您有express.js和socket.io.js的最后一个版本。 我这边它与伟大的工作,

express@2.5.8 
socket.io@0.8.5 
node@0.6.5

否则,一个解决方案可以是调用var io = require('socket.io').listen(server); 你的后server.use



文章来源: node.js: socket.io vs express.static