0

Facebook でのチャットなどのリアルタイム メッセージの機能を実装したいのですが、いくつかの質問で混乱します
。 Ajaxの、そうですよね?
2. ソケットを使用する場合、TCP または UDP のどちらのプロトコルを選択すればよいですか?
3. 私が TCP を使用していると仮定すると、サーバーは失われたパッケージを再送しようとし続けるので、多くのオーバーヘッドがかかりますか?
4. サーバーとクライアント間の通信でネットワークに障害が発生した場合はどうなりますか? ソケットは自動的に閉じますか、それともいくつかの種類のネットワーク条件に対処する必要がありますか?
誰でも助けることができますか?

4

1 に答える 1

0
  1. WebSocket を使用できます。XMLHttpRequest は、リアルタイムではないため、現在はおそらく廃止されていますが、WebSockets をサポートしていないブラウザーを使用しているユーザーには、XMLHttpRequest を使用するようにフォールバックできます。

    • 送信している情報が送信された時点でのみ有効な場合は、UDP を使用します。たとえば、プレイヤーの位置になるゲームなどです (5 秒前の位置を受け取る必要はありません)。また、WebSocket で UDP を使用することはできません。

    • それ以外の場合は、TCP を使用します (p2p を実現するためにホール パンチングを行う場合を除きます)。データの損失はおそらくあなたにとって悪いことであり、TCP がそれを処理します。

  2. 通信の失敗が許容できる場合を除き、UDP を使用して失われたデータを手動で確認して再送信する必要があります。

  3. IOException が発生します。接続が不適切に閉じられた場合、必要に応じて変更できる無応答のタイムアウト後に例外がスローされます。これは、TCP を使用することを前提としています。それ以外の場合は、受信した (または受信しなかった) 応答/データに応じて、クライアントが接続または切断されたと考えるときに、自分で把握する必要があります。

于 2013-05-26T12:12:18.177 に答える