0

私は Node.js の学習を始めたばかりで、メソッドについて学習していたときに、たとえば安定している Socket.IO に対して、fs.watchFile()それを使用してチャット Web サイトを効率的に構築できるかどうか疑問に思っていましたが、100% 安定しているとは思えません。 fs.writeFile()(フラッシュを含むいくつかのフォールバック)。

を使用fs.watchFileすると、チャットの履歴を非常に簡単に保持することもできます (その場で JSON が使用されるため)。

チャット ファイルは、最後のおしゃべりのメッセージのみが DOM に取り込まれるように JSON でフォーマットできます (または、ファイルが更新されたときにメッセージを効率的に「取得」できるようにします)。

Node についてもっと学ぶ必要があり、さらに Socket.IO と比較できるようにする必要があるため、まだ試していませんが、それについてどう思いますか? 効率的で安定したチャットの方法になるでしょうか?

4

3 に答える 3

4

fs.watchFile()ローカルファイルシステム (サーバー上) のファイルへの変更を監視するために使用できます。これでは、すべてのクライアントのチャット メッセージをブラウザで更新する必要がなくなります。そのためには、Webソケット、AJAXまたはFlashが必要です(または、それらすべてを処理するsocket.io)。

クライアントで通常できることは、Web ソケットの使用を試みることです。ブラウザがそれらをサポートしていない場合は、XMLHttpRequest を使用してみてください。それが失敗した場合は、Flash にフォールバックします。プログラミングは大変で、node.js サーバーでも処理する必要があります。Socket.io がそれを行います。

また、socket.io はかなり安定しています。Flash へのフォールバックは、不安定なためではなく、より優れたソリューション (Web ソケットなど) に対するブラウザーのサポートがないためです。

于 2013-10-17T05:34:22.437 に答える
2

チャット ファイルをフラットファイル JSON に格納することはお勧めできません。ファイルを操作する場合、JSON オブジェクト全体を解析してシリアル化する必要があり、JSON オブジェクトのサイズが大きくなると非常に遅くなるからです。filesystem モジュールの watch メソッドも、すべてのオペレーティング システムで機能するとは限りません。

また、Node.js と Socket.IO はまったく異なるものであるため、比較することもできません。Socket.IO は、ブラウザーとサーバー間のリアルタイム転送用の Node モジュールです。必要なものは、何をしているかによって異なります。チャット履歴が必要な場合は、MongoDB や MySQL などのデータベースを使用する必要があります。ファイルの変更を監視するのは効率的な方法ではなく、受信したメッセージをそのまま送信する必要があります。

結論として、ファイルが変更されたかどうかを確認するためにポーリングを使用することに加えて、ファイルの同時書き込みが原因で競合状態が発生するため、fs.watchFile()andを使用することは非常に悪い考えです。代わりに Socket.IO を使用して、メッセージを他のクライアントにプッシュするか、受信したメッセージをデータベースに保存する必要がありますfs.writeFile()fs.watchFile()

于 2013-10-17T05:34:36.693 に答える