WebSocketのチャットインタフェースの使用、およびいくつかの移動端の穴(上)を踏む
1749 ワード
最近、モバイル端末とpc端末を含むカスタマーサービスページが開発されています.主にWebSocketを用いてバックグラウンドとチャット通信を行う(もちろんWebSocketと互換性がないのはポーリング方式)!
一、WebSocketはhttpポーリングの長所と短所に比べて?
メリット
欠点各ブラウザの互換性が不一致であり、サーバの長期的な接続維持には一定のコストがかかります. WebSocketは文字列 しか転送できません.
二、WebSocket API紹介
詳細なAPIはMDNを見ることができますが、ここでは私がプロジェクトで使ったものだけを紹介します.https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket を作成することに相当する構造関数である 0は、 が接続中であることを示す.1は、接続され通信可能であることを示す .2は、接続を閉じる を示す. 3は、接続が閉じるか、接続が失敗したことを示す である.
に進みます. . をアクティブに閉じる. にメッセージを送信する.
三、WebSocket運用中の注意事項(後で実現方式を単独で書く)
一、WebSocketはhttpポーリングの長所と短所に比べて?
メリット
websocket
は、フロントエンドがずっとhttpリクエストを送信してバックグラウンドに問い合わせ、カスタマーサービスにメッセージの返事があるかどうかを尋ねる必要はありません.同様に、お客様のネットワーク帯域幅とコンピューティングリソースも削減されます.欠点
二、WebSocket API紹介
詳細なAPIはMDNを見ることができますが、ここでは私がプロジェクトで使ったものだけを紹介します.https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket
WebSocket
は、websocketリンクnew WebSocket('ws://localhost:8080')
に相当する.WebSocket.readyState
はWebSocket
の接続状態を傍受する、WebSocket.onopen
接続が成功すると、この方法WebSocket.onerror
接続失敗コールバック関数WebSocket.onclose
接続閉じたコールバック関数WebSocket.onmessage
サーバがメッセージをプッシュした後のコールバック関数WebSocket.close()
現在の接続WebSocket.send()
バックグラウンド三、WebSocket運用中の注意事項(後で実現方式を単独で書く)
Websocket
は、サーバが接続を切断したかどうかを監視するために、バックグラウンドとping
、pong
の心拍保持を実現する必要がある.WebSocket
は、モバイル側では多くのシーンで接続が切断されるため、websocketの切断と再接続の機能を実現する必要があります.WebSocket
メッセージを送信した後、バックグラウンドが受信するか、第三者に送信するかは、(パブリッシュ購読モードを使用する)フロントエンドでメッセージを送信するときにuuid
を持参し、このuuid
を購読するメッセージ確認メカニズムを実現する必要があり、バックグラウンドが受信すると、このuuid
を確認メッセージコマンドバンドに返し、その後、フロントエンドは、以前にサブスクリプションで受信したコールバックに基づいてメッセージ確認の論理を書くことができます.