8

次の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');
    });
});

/public サブフォルダー内のファイル用の単純な express.static サーバーと、socket.io 機能。このセットアップでは、「socket.io.js」ファイルのリクエストはすべて失敗します。つまり、

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

404 エラーを返します (ファイルが見つかりません)。静的ファイル サーバーは正常に動作します。「express」の代わりに「http」モジュールを使用するだけで (express.static と express.logger の行をコメントアウト)、socket.io.js は正しく提供されます。両方の機能を組み合わせるにはどうすればよいですか?

4

2 に答える 2

3

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);
于 2012-04-19T16:06:21.947 に答える
0

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

于 2012-04-19T15:50:31.463 に答える