2012-04-19 34 views
8

Tôi có chạy sau server.js: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'); 
    }); 
}); 

Simple express.static máy chủ cho các tập tin trong một/thư mục con nào, cộng với socket.io chức năng. Với thiết lập này, bất kỳ yêu cầu các tập tin 'socket.io.js' thất bại, ví dụ:

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

trả về một lỗi 404 (không tìm thấy tệp). Máy chủ tệp tĩnh hoạt động chính xác. Nếu tôi chỉ đơn giản sử dụng mô đun 'http' thay vì 'express' (bình luận ra dòng express.static và express.logger) socket.io.js được phân phát đúng. Làm thế nào tôi có thể kết hợp cả hai chức năng?

Trả lời

0

Đảm bảo bạn có phiên bản mới nhất của express.js và của socket.io.js. bên Mỹ nó làm việc tuyệt vời với

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

Nếu không, một giải pháp có thể để gọi var io = require('socket.io').listen(server); sau khi bạn server.use

+0

[email protected] có thể không phải là một ý tưởng tốt ... làm việc tại – daaanipm

+0

Oh, trên thực tế, có một số rắc rối lớn với tốc @ 3 cho thời điểm này, chủ yếu là trên router và middlewares, họ đang làm việc trên đó. Bạn nên giới hạn bản thân với phiên bản ổn định (hiện tại là @ 2.5.9), nếu bạn không có kế hoạch để fork express.js – Tronix117

3

tốc 3.0.0 (mới nhất) thay đổi API của nó.

Here là câu hỏi rất giống với câu hỏi của bạn mang lại phản hồi.

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); 
Các vấn đề liên quan