freebsdサーバーでnode.jsアプリケーションを実行しようとしていますが、socket.ioライブラリを使用できません。私は含めてみました:
<script src="/socket.io/socket.io.js"></script>
これにより404エラーが発生し、ファイルに直接リンクすると(つまり、public_htmlフォルダー内にある場合)、ionotdefinedエラーが発生します。
前もって感謝します
freebsdサーバーでnode.jsアプリケーションを実行しようとしていますが、socket.ioライブラリを使用できません。私は含めてみました:
<script src="/socket.io/socket.io.js"></script>
これにより404エラーが発生し、ファイルに直接リンクすると(つまり、public_htmlフォルダー内にある場合)、ionotdefinedエラーが発生します。
前もって感謝します
この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ファイルを取得する必要があります。
node.jsアプリケーションはまだそれを提供する必要があります-それは自動的に提供されません。サーバーには何がありますか?それは次のようなものでなければなりません
var app = require('express').createServer();
var io = require('socket.io').listen(app);
または同様のもの(listen
重要です)。場所はディスク上の実際の場所ではありません。私が理解している限り、socket.ioライブラリはURLをインターセプトし、クライアント側のライブラリを提供する必要があります。
ボディパーサーの後に次を追加します。
, express.static(__dirname + "/public")
だから次のようなもの:
var app = module.exports = express.createServer(
express.bodyParser()
, express.static(__dirname + "/public")
);
から直接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`);
});