node.js:socket.io vs express.static [英] node.js: socket.io vs express.static

查看:130
本文介绍了node.js:socket.io vs express.static的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下server.js运行:

I have the following server.js running:

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服务器,用于/ public子文件夹中的文件,加上socket.io功能。使用此设置,对'socket.io.js'文件的任何请求都将失败,即

Simple express.static server for files in a /public subfolder, plus socket.io functionality. With this setup, any request for the 'socket.io.js' file fails, i.e.

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

返回404错误(找不到文件)。静态文件服务器正常工作。如果我只是使用'http'模块而不是'express'(注释出express.static和express.logger行),socket.io.js服务正确。如何组合这两个功能?

returns a 404 error (file not found). Static file server works correctly. If I simply use the 'http' module instead of 'express' (commenting out express.static and express.logger lines) socket.io.js is served correctly. How can I combine both functionalities?

推荐答案

Express 3.0.0(最后)更改其API。

Express 3.0.0 (lastest) change its API.

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

Here is a question very similar to yours that delivers the response.

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

这篇关于node.js:socket.io vs express.static的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆