Documentation/Tutorials/Ping

Ping

Ping は RTMP の中で最も不思議なメッセージであり、私たちもまだ十分に理解しているわけではありません。ひと言で言えば、Ping メッセージは、クライアントとサーバーとの間でやり取りされる特別なコマンドとして使われます。ここでは、すでに判明しているすべての Ping メッセージについて説明を試みます。今後のリストの充実を期待しています。

Ping パケットのタイプは 0x4 で、2 つの必須パラメータと 2 つの省略可能パラメータがあります。最初のパラメータは、Ping のタイプで short 整数です。2 番目のパラメータは ping のターゲットです。Ping は常にチャンネル 2 (コントロールチャンネル) で送信され、RTMP ヘッダー内のターゲットオブジェクトは常に、接続オブジェクトを意味する 0 なので、Ping の送信先となる正確なターゲットオブジェクトを示すために追加のパラメータを指定する必要があります。2 番目のパラメータは、この役割を引き受けます。値は、RTMP ヘッダーのターゲットオブジェクトフィールドと同じ意味を持ちます。(2 番目の値は、RTT Ping/Pong などのその他の目的にも使用できます。これはタイムスタンプとして使われます。) 3 番目と 4 番目のパラメータは省略可能で、Ping パケットのパラメータとみなすことができます。以下に示すのは、Ping メッセージの不完全なリストです。

  • タイプ 0: ストリームをクリアします。3 番目と 4 番目のパラメータはありません。2 番目のパラメータは 0 であることがあります。接続が確立された後、Ping 0,0 がサーバーからクライアントに送信されます。このメッセージは、Play のスタート時、および Seek または Pause/Resume リクエストへの応答でも、クライアントに送信されます。この Ping は、サーバーから次に送信されるパケットのタイムスタンプを使ってクロックを再キャリブレートするよう、クライアントに伝えるものです。
  • タイプ 1: ストリームに再生バッファのクリアを指示します。
  • タイプ 3: クライアントのバッファ時間です。3 番目のパラメータは、ミリ秒単位のバッファ時間です。
  • タイプ 4: ストリームをリセットします。VOD の場合はタイプ 0 とともに使われます。しばしばタイプ 0 の前に送信されます。
  • タイプ 6: サーバーからクライアントを Ping します。2 番目のパラメータは、現在時間です。
  • タイプ 7: クライアントからの Pong 応答です。2 番目のパラメータは、クライアントが Ping を受け取った時間です。