何らかの理由で、ノードサーバーがルート/socket.io/socket.io.js
、私は常に404エラーを受け取ります。
異なるノードバージョンをコンパイルしてみました(現在はサーバー上で実行され、実際に動作している0.6.1)。
app.jsからinfo: socket.io started
およびsocket.io.jsを呼び出そうとしてもエラーなし。
ローカルホストとポート8000から試してみて、エクスプレスフレームワークを使用します
これはapp.jsのコードです。
var express = require('express')
, app = require('express').createServer()
, io = require('socket.io').listen(app, { log: true });
app.listen(8000);
app.configure(function() {
app.use(express.static(__dirname + '/public'));
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
io.sockets.on('connection', function (socket) {
// all other stuff here
Expressバージョンを確認してください。 Expressは最近APIが変更された3.0alphaに更新されました。 3.0の場合、コードを次のようなものに変更できます。
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);
接続に関する同じ問題: https://github.com/senchalabs/connect/issues/500#issuecomment-462077
Express 3 Webフレームワークでの使用:( from socket.io )
> Express 3では、http.Server
をインスタンス化してsocket.ioを最初にアタッチする必要があります:
意味-(1)サーバーインスタンスを作成する必要があります。
var app = express();
var http = require('http').createServer(app);
(2)socket.ioと組み合わせます:
var io = require('socket.io');
io.listen(http);
のみ-(3)サーバーをリッスンさせる:
http.listen(8080);
この順序を守ってください!
ノード0.8.1をインストールした後、同じ問題が発生しました。プロジェクトフォルダーのnode_modulesマップを削除し、express/socket.ioを再インストールしました。その後、質問のコードで再び問題なく動作しました。
Socket.ioをリポジトリ内にインストールします:
npm install socket.io --save
その後、サーバーを設定します:
var express = require('express')
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
server.listen(app.get('80')); // not 'app.listen'
そしてアーカイブ内HTML/EJS
または他の必要なものを追加:
<script src="/socket.io/socket.io.js"></script>
Console
(Chrome/Mozillaなど)で動作するかどうかを確認します。
私の例では、Chrome(Ctrl + shift + I):
たぶんこれはあなたを助けるかもしれません、私のUbuntu 11.10で私は正しく設定していませんNODE_PATH
変数、linux/macを使用している場合は、.bashrc/.zshrcファイルに以下の行を追加してください。
export NODE_PATH=/usr/lib/node_modules:$NODE_PATH