1

私のサイトにはShoutBoxがあります。クライアントサイトの websocket に実装され、バックエンドに php が実装されています。勉強の一環として、node.js のバックエンドを書き直すことにしました。PHP でサーバーを作成するので、簡単なはずです。

だから私は、このサイトで利用可能なライブラリである、すでに行われた何かを見つけることから始めます: https://github.com/joyent/node/wiki/Modules#wiki-ws-ajax

Socket.io -> インストール後、動作するために必要なコードとファイルが表示されたら、いいと思います。多くの機能 (例: websocket、フラッシュ ソケット、AJAX ロング ポーリング) は大丈夫ですが、何のために? 誰かが websocket を使用したい場合は、websocket が必要です。ブラウザーがサポートしていない場合は、最新バージョンをダウンロードしてください。サポート プロトコルについても同じことが言えます (hixie…hybid -> RFC 6455 は 2011 年 12 月から 1 年で十分です)。現在、すべてのブラウザーが RCF をサポートしています。最も古いバージョンのブラウザーを使用しているユーザーは、とにかくブラウザーを更新する必要があります。そのため、不要なコードがたくさんあります。

これは私の考えです。あなたはそれに同意することはできません。私は大企業での開発経験があまりありません。最後に、もっと軽いものを見つけることにしました。RCF 6455 をサポートしたいだけです。

Ws -> サポート 3 プロトコル、これは受け入れられます。コードの分析を開始し、5 分後にあきらめます。JavaScript の知識に疑問を持ち始めました。

私は6〜7個のライブラリについて何かをチェックします.それぞれがwebsocket.ioに基づいているか、奇妙なコードを持っています. PHP websocket サーバーを探すときと同じ状況です。私のコードには161行あります。プロトコルなどの不要なものをすべて削除した後、node.jsでも同じ結果になると確信しています。唯一の解決策は、独自のサーバーを作成することです。

さて、node.js のドキュメントにアクセスして、どこから始めればよいでしょうか? 完全に混乱しています。http または net モジュールを使用しますか? 以前のライブラリは http を使用していましたが、ネット モジュールではソケット クラスであり、その名前は私がそれを必要としていると示唆しています。

net.connect(options, [connectionListener]) と net.connect(port, [host], [connectListener]) があります。なんで?それは同じではありませんか?

サンプルコードを探しましたが、見つけるのに適した場所です。そこにはありません。唯一の例はライブラリです。とてもシンプルなウェブソケットサーバーを持っている人が私と共有してくれませんか? 接続、ハンドシェイク、接続されているすべてのメッセージへのブロードキャスト (メッセージ メッセージが 65535 未満)

編集: 誰かが DOC を読み取り可能にするまで、私には不可能です。

一部のモジュールでは、クライアントサイトにファイルを含める必要があることを忘れています。何のために?client が既に存在するのに、なぜ誰かが client を書くのか教えていただけますか? http://www.w3.org/TR/websockets/

私が貼り付けたそのリストでは、誰もが得ることができます ? まったく機能しないモジュールが見つかりました。または、socket.io に基づいたモジュールが何をしても同じです。なぜ誰かがそれらを書くのですか?

この同じケースで、他の人が必要としないのに、なぜ誰かが C++ コードを追加する必要があるのか​​ 理解できませんか?

4

1 に答える 1

0

私もws モジュールに小さな問題があります。閉じた後socketにオブジェクトデータを削除せず、V8ガベージコレクターが未使用のデータを削除するまで、すべてのデータがメモリにプッシュされ、メモリリークになるため、迷惑になります。ある意味では問題ありませんが、ゲームサーバー、または人々がリフレッシュ/チャンネル/ゲーム/などに参加する非常にアクティブなゲームがある場合、その余分なオーバーヘッドにより、不要なメモリ使用量がかなり増加します。V8 GC を待つのではなく、クローズ時に一時的なソケット オブジェクトのプロパティを削除できれば、ws モジュールが最適に機能すると思います。

そうは言っても、これは最小限のデータ量であり、平均的なユーザーは非常にアクティブなサーバーを持っていない限り、それに気付くことさえありません.

とにかく、昨夜見つけたこの宝石を見てください: https://www.npmjs.com/package/lark-websocket

非常に単純な API を使用してテキスト Web ソケットをサポートする、非常に必要最小限のシステムです。唯一の問題は、作成者がtry / catchコード内でブロックを使用していないため、本番サーバーで使用したくないことです。オーバーヘッドは ws モジュールに比べて非常に小さく、私のゲームサーバー テストでは、ws モジュール内nodejsで美しく動作します。

ただし、 ws モジュールとlark-websocketはどちらも同じように簡単に使用できます。「軽量」に見えるので、こちらの方が気に入っていただけると思います。これがお役に立てば幸いです。

于 2015-06-03T17:35:07.853 に答える