2017-04-02 1 views
0

私はnodejsでwebsocketリアルタイムチャットシステムを実装しようとしています。私はすでにログインシステムとWebSocketチャットシステムを持っています。私が立ち往生している唯一のことは、ユーザーがチャット履歴にアクセスできるように、メッセージをMySQLに保存することです。問題は、受信者にWebソケットメッセージを送信して、何らかの理由でMySQLの挿入が失敗することを望まないということです。Webソケットメッセージをmysqlに保存する際に、データの損失を防ぐにはどうしたらいいですか?

可能な解決策: 明白な解決策は、受信者にウェブソケットメッセージを送る、その後のMySQL のメッセージデータを保存することです。エラーがある場合は、メッセージを送信するのではなく、送信者に返信してください。これは、サーバーがMySQLの挿入成功の確認を待たなければならない場合、これはWebソケットの目的を敗北させませんか?

+0

ウェブソケットまたはSocket.io? –

+0

どのように目的を破るか? – EJP

+0

私たちは数ミリ秒を話しています。ユーザはmysqlに保存することで導入されたレイテンシを認識しません。もしそうなら、あなたの質問やサーバーに問題がある可能性があります。 –

答えて

3

これは大したことではないと思いますが、データベースの保存を待っている待ち時間を避けるためです(これは実際問題ではありません)。メッセージを送信します。画面上に「メッセージ送信」と表示されます。 サーバーで、非同期データベースの保存を開始します。 他のユーザーのクライアントがメッセージを受信すると、送信者の画面に の承認を表示します。 サーバーにデータベースの保存が完了すると、エラーが発生しない限り何もする必要はありませんメッセージの保存中にエラーが発生し、保存を再試行しました。

音声/ビデオ中のGoogleハングアウトのようなシステムでは、チャット履歴を保存しようとしても機能しません。

あなたが唯一本当にあなたのデータベースサーバが、その場合には、あなたが大きな問題とあなたのエラーメッセージでしょう手掛かりのユーザーを持つ、容量が不足するか、ダウンした場合、問題を持ってしようとしている

それとも待つことができますデータベースに保存するために、それは待つ時間が巨大ではありません。また、websocketsとsocket.ioは常にサーバーに移動します。 WebRTCデータチャネルを使用している場合、がサーバーに関係しないピア2ピアプロトコルです。

関連する問題