4

freebsdサーバーでnode.jsアプリケーションを実行しようとしていますが、socket.ioライブラリを使用できません。私は含めてみました:

    <script src="/socket.io/socket.io.js"></script>

これにより404エラーが発生し、ファイルに直接リンクすると(つまり、public_htmlフォルダー内にある場合)、ionotdefinedエラーが発生します。

前もって感謝します

4

4 に答える 4

12

この1行を含む別のnode.jsアプリケーションを作成してから、node.jsで実行してみてください

var io = require('socket.io').listen(8000);

次に、ブラウザにアクセスするhttp://127.0.0.1:8000と、わかりやすい「Welcometosocket.io」が表示されます。挨拶。これを取得している場合は、socket.ioが実行されており、socket.io.jsファイルを提供します。

私が考えることができる他の唯一のことは、クライアントファイルの代替ポートにリンクしていない可能性があるということです。ポート80で実行されているExpressでsocket.ioサーバーを実行している場合を除きます。今のところ、socket.ioのスクリプトソースがに設定されているクライアントファイルを作成します。

<script src="http://127.0.0.1:8000/socket.io/socket.io.js"> </script>

これにより、ポート8000​​で実行されているsocket.ioサーバーに接続し、socket.io.jsファイルを取得する必要があります。

于 2012-05-13T14:35:46.283 に答える
3

node.jsアプリケーションはまだそれを提供する必要があります-それは自動的に提供されません。サーバーには何がありますか?それは次のようなものでなければなりません

var app = require('express').createServer();                                    
var io = require('socket.io').listen(app);

または同様のもの(listen重要です)。場所はディスク上の実際の場所ではありません。私が理解している限り、socket.ioライブラリはURLをインターセプトし、クライアント側のライブラリを提供する必要があります。

于 2012-05-12T11:02:59.197 に答える
0

ボディパーサーの後に次を追加します。

, express.static(__dirname + "/public")

だから次のようなもの:

var app = module.exports = express.createServer(
  express.bodyParser()
  , express.static(__dirname + "/public")
);
于 2012-05-12T17:32:59.393 に答える
0

から直接htmlファイルを実行(開く)した場合に同じ種類の問題が発生した場合local file directory(ex: file:///C:/Users/index.html)

解決策:localhost (ex: http://localhost:3000/index.html)サーバーがリッスンしている場所でファイルを実行(開く)する必要

以下のコードスニペットは、サーバーを作成する方法と、expressおよびsocket.io

const express = require("express");
const app = express();
const httpServer = require("http").createServer(app); 
const io = require("socket.io")(httpServer);

///////////////////////////////////////////////////////////////
// Any other server-side code goes here                     //
//////////////////////////////////////////////////////////////

httpServer.listen(3000, () => {
    console.log(`Server listening to port 3000`);
});
于 2021-12-03T17:18:09.500 に答える