2012-04-19 8 views
8

Ich habe den Lauf server.js folgenden: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'); 
    }); 
}); 

Einfache express.static Server für Dateien in einem/public Unterordner sowie Socket.io Funktionalität. Mit diesem Aufbau kann jede Anforderung für die Datei ‚socket.io.js‘ ausfällt, das heißt

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

gibt einen Fehler 404 (Datei nicht gefunden). Der statische Dateiserver funktioniert ordnungsgemäß. Wenn ich einfach das Modul 'http' anstelle von 'express' verwende (expression.static und express.logger Zeilen auskommentieren), wird socket.io.js korrekt bedient. Wie kann ich beide Funktionalitäten kombinieren?

Antwort

0

Stellen Sie sicher, dass Sie die letzten Versionen von express.js und socket.io.js haben. Meine Seite es funktioniert super mit

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

Andernfalls kann eine Lösung sein var io = require('socket.io').listen(server); rufen nach dem server.use

+0

[email protected] kann keine gute Idee gewesen ... arbeiten jetzt – daaanipm

+0

Oh, in der Tat gibt es einige große Probleme mit Express @ 3 für den Augenblick, in erster Linie auf dem Router und Middleware, sie arbeiten daran. Sie sollten sich auf eine stabile Version beschränken (aktuell ist @ 2.5.9), wenn Sie nicht vorhaben express.js zu forcieren – Tronix117

3

Express 3.0.0 (neuesten) seine API ändern.

Here ist eine Frage sehr ähnlich wie Ihre, die die Antwort liefert.

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