一些应用只是使用了HTTP编程,也就是只用了AFNetworking。 但是听说IM类的应用需要使用到socket,是为什么呢?
光阴似箭催人老,日月如移越少年。
http は 1 回限りの使用であり、socket は長期接続を実現できます。往復のネットワーク リクエストでは問題が解決できない場合に使用されます。 たとえば、WeChat では、メッセージを受信するときに HTTP リクエストを使用してメッセージを更新し、メッセージがいつ届くかわからないため、送信時に常にメッセージを監視するようにソケットを設定します。メッセージを送信する場合、HTTP をより頻繁に使用するため、毎回ソケットを使用する必要があり、音声通話やビデオ通話、ブレークポイントの再開などもすべてソケットを使用する必要があります。理論的には、WeChat の開始後、または切断して再接続した後の同期メッセージでは、http を使用して未受信のメッセージを要求できますが、多くの理由によりソケットも使用されます。
もちろん、上で述べたのは最も基本的な理由にすぎません。ソケットを使用して http を実装できない理由はたくさんあります。 http が達成できることはすべて、http が tcp を介したソケットのアプリケーション シナリオ プロトコルにすぎないため、ソケットでも達成できます。
IM は主にソケットに基づいて独自に開発された一連の送信プロトコルであり、http に似ていますが、独自のビジネスのために開発されました。
IM アプリケーション サーバーは、ユーザーのログイン ステータスを取得するために、ユーザーがオンラインであることとユーザーのネットワーク ステータスを確認するために「ハートビート パケット」を継続的に送信する必要があります。HTTP を使用する場合、冗長性が高くなります。情報(HEADER、CONTENT-TYPE、STATUS)など。
多くの IM アプリケーションは、セキュリティやデータ圧縮のために独自のネットワーク プロトコルを実装しています。
http は 1 回限りの使用であり、socket は長期接続を実現できます。往復のネットワーク リクエストでは問題が解決できない場合に使用されます。
たとえば、WeChat では、メッセージを受信するときに HTTP リクエストを使用してメッセージを更新し、メッセージがいつ届くかわからないため、送信時に常にメッセージを監視するようにソケットを設定します。メッセージを送信する場合、HTTP をより頻繁に使用するため、毎回ソケットを使用する必要があり、音声通話やビデオ通話、ブレークポイントの再開などもすべてソケットを使用する必要があります。理論的には、WeChat の開始後、または切断して再接続した後の同期メッセージでは、http を使用して未受信のメッセージを要求できますが、多くの理由によりソケットも使用されます。
もちろん、上で述べたのは最も基本的な理由にすぎません。ソケットを使用して http を実装できない理由はたくさんあります。
http が達成できることはすべて、http が tcp を介したソケットのアプリケーション シナリオ プロトコルにすぎないため、ソケットでも達成できます。
IM は主にソケットに基づいて独自に開発された一連の送信プロトコルであり、http に似ていますが、独自のビジネスのために開発されました。
IM アプリケーション サーバーは、ユーザーのログイン ステータスを取得するために、ユーザーがオンラインであることとユーザーのネットワーク ステータスを確認するために「ハートビート パケット」を継続的に送信する必要があります。HTTP を使用する場合、冗長性が高くなります。情報(HEADER、CONTENT-TYPE、STATUS)など。
多くの IM アプリケーションは、セキュリティやデータ圧縮のために独自のネットワーク プロトコルを実装しています。