簡體   English   中英

node.js:socket.io與express.static

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

我正在運行以下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服務器,用於/ public子文件夾中的文件,以及socket.io功能。 使用此設置,對“ socket.io.js”文件的任何請求都會失敗,即

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

返回404錯誤(找不到文件)。 靜態文件服務器正常工作。 如果我只是使用“ http”模塊而不是“ express”(注釋express.static和express.logger行),則將正確提供socket.io.js。 如何結合這兩種功能?

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

確保您擁有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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM