2

これについてはすでに多くの質問があることは知っていますが、誰も私に答えてくれませんでした。さらに、私の質問は少し異なります。

これを使用してノードでsocket.ioサーバーを起動しています:

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

私の端末はすべて問題ないと言っています:

info  - socket.io started

今、次の URL を使用して、クライアント側のブラウザーに .js ファイルをロードしようとしています。

http://<hostname>:8000/socket.io/socket.io.js

404 が表示されず、永遠にハングアップします。また、ネットワーク ユーティリティを使用してポート 8000 に ping を実行しましたが、正常に開いているようです。

node と socket.io は昨日インストールしたばかりなので、最新バージョンのはずです。誰でもこれに光を当てることができますか?ありがとう!

4

4 に答える 4

2

.js ファイルを要求できなかった理由は、会社のネットワークが通常のポート (80、21 など) を除くすべてのポートをブロックしているためであることがわかりました。

于 2013-03-02T15:00:18.253 に答える
1

少なくとも 3 つの部分を連携させる必要があります。

  1. HTML を提供して (/index.html で問題ありません)、Web ページを作成します。このファイルには、socket.io クライアント<script>タグが含まれている必要があります。このためには、スターター サンプルの http サーバー部分が必要です。これが欠けているため、サーバーへのブラウジングがハングアップします。

  2. socket.io クライアントを提供します。Socket.io は、http サーバー関数を渡すと自動的にこれを行います。これは、 socket.iohttpドキュメントの最初の例のように、ノードのモジュールだけで実行できるため、フル エクスプレスは必要ありません。

  3. ソケットで実際に何かを行うためのJavaScript。これは、または別のファイル<script>内のタグのコンテンツにすることができます。index.htmlそれが別のファイルである場合は、実際にそれを提供するように http サーバーをセットアップする必要があります。

于 2013-03-01T16:04:32.077 に答える
1

http/https 経由でアクセスするには、http/https サーバーを起動する必要があります。socket.io サーバーを起動するだけでは不十分です。以下をせよ:

var http = require('http');
var  app = http.createServer(),
io = require('socket.io').listen(app);
app.listen(7000, "0.0.0.0");

その後、ファイルにアクセスできますhttp://localhost:7000/socket.io/socket.io.js

sockets.io は、websocket プロトコル (ws://) を使用します。ウィキペディアのページを参照してください。

于 2013-03-01T15:48:36.663 に答える
1

Express.js を使用します。socket.ioファイルをフォルダーに配置し、public/javascriptsこの行を html に追加します。

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

これが最善の方法だと思います。ノードを作成しているとき、ノードはプロジェクトの public フォルダーで名前がhttp://<hostname>:8000/socket.io/socket.io.js
付けられたフォルダーを見つけようとします。socket.ioそしてそのsocket.io.js中のファイル。

Express.js を使用したくない場合は、リクエストのルートが見つからない場合は、リクエストをキャッチしてファイルをロードする必要があります (実際にエクスプレスが行うこと)。サーバー内のどのルートとも一致しません。

そして、ファイルを使用することをお勧めしsocket.io.min.jsます(ファイルは小さく、フォルダーにありますnode_modules\socket.io\node_modules\socket.io-client\dist

于 2013-03-01T15:21:50.167 に答える