[英]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.