Relay メッセージプロトコル
Understand how the Relay message protocol transmits data between clients and servers in the Relay service.
読み終わるまでの所要時間 7 分最終更新 1ヶ月前
プロジェクトで UTP または NGO を使用した Relay SDK を使用している場合は、Relay メッセージプロトコルが既にサポートされています。ただし、代替のエンジンやネットワーキングソリューションを使用したい場合は、まず Relay メッセージプロトコルを実装する必要があります。Relay メッセージプロトコルの仕様を使用して、Relay メッセージプロトコルを実装してください。 Relay メッセージプロトコルでは、フィールドの値がビッグエンディアンの順序で表現されることを前提としています。これは “ネットワークオーダー” とも呼ばれ、最も重要なバイトが最初に来ます。 メッセージは認証されません。ただし、HMAC 署名が使用される
BINDメッセージの種類
| コード | 名前 | 説明 |
| | |
| | |
| | |
| | |
| 予約済み。 | |
| 予約済み。 | |
| | |
| 予約済み。 | |
| 予約済み。 | |
| | |
| | |
| | |
| | |
承諾モードの種類
承諾モードは、クライアント からの接続リクエストを Relay サーバー がどのように処理するかを定義するものです。 Relay では、AUTOAUTO| コード | 名前 | 説明 |
| | |
| 予約済み。 |
標準ヘッダー
すべてのメッセージタイプには共有の標準ヘッダーがあり、そのヘッダーには署名、Relay メッセージプロトコルのバージョン、およびパケットの本体に含まれるメッセージが含まれています。| バイト | 1 ..2 | 3 | 4 |
| 目的 | | | |
| フィールド | Type | 説明 |
| []byte | |
| uint8 | |
| uint8 | |
メッセージ本文
BIND メッセージ
BINDBINDBINDBINDBINDNonce| バイト | 1 ..4 | 5 | 6 ..7 | 8 | 9 ..N | N+1 ..33 |
| 目的 | ヘッダー (タイプ 0) | | | | | |
BIND| フィールド | Type | 説明 |
| uint8 | |
| uint16 | |
| uint8 | |
| []byte | |
| [32]byte | |
セキュリティ
HMAC には、割り当てサービス から返された秘密鍵で署名する必要があります。HMAC が無効である場合、Relay サーバーはBIND messageBIND messageBIND_RECEIVED メッセージ
Relay サーバーは、リクエスト元クライアントがBIND messageBIND_RECEIVEDCONNECT_REQUEST message| バイト | 1 ..4 |
| 目的 | ヘッダー (タイプ 1) |
PING メッセージ
PINGPING
各
PINGPINGPING| バイト | 1 ..4 | 5 ..20 | 21 ..22 |
| 目的 | ヘッダー (タイプ 2) | | |
PING| フィールド | Type | 説明 |
| [16]byte | |
| uint16 | |
CONNECT_REQUEST メッセージ
CONNECT_REQUESTToConnectionData| バイト | 1 ..4 | 5 ..20 | 21 | 22 .. |
| 目的 | ヘッダー (タイプ 3) | | | |
CONNECT_REQUEST| フィールド | Type | 説明 |
| [16]byte | |
| uint8 | |
| []byte | |
ACCEPTED メッセージ
Relay サーバーは、ターゲットクライアントへの接続が成功した後に、リクエスト元クライアントにACCEPTED| バイト | 1 ..4 | 5 ..20 | 21 ..36 |
| 目的 | ヘッダー (タイプ 6) | | |
ACCEPTED| フィールド | Type | 説明 |
| [16]byte | |
| [16]byte | |
DISCONNECT メッセージ
DISCONNECTCONNECT_REQUESTDISCONNECTDISCONNECTDISCONNECTERROR messageRELAYCONNECT_REQUEST message| バイト | 1 ..4 | 5 ..20 | 21 ..36 |
| 目的 | ヘッダー (タイプ 9) | | |
DISCONNECT| フィールド | Type | 説明 |
| [16]byte | |
| [16]byte | |
RELAY メッセージ
RELAYRELAYBIND messageFromAllocationIDErrClientPlayerMismatchERRORCONNECT_REQUESTErrNotConnectedERROR messageToAllocationIDFromAllocationID| バイト | 1 ..4 | 5 ..20 | 21 ..36 | 37 ..38 | 39 .. |
| 目的 | ヘッダー (タイプ 10) | | | | |
以下の表は、
RELAY| フィールド | Type | 説明 |
| [16]byte | |
| [16]byte | |
| uint16 | |
| []byte | |
CLOSE メッセージ
CLOSECLOSECLOSECLOSEERRORCLOSECLOSECLOSEBINDPING| バイト | 1 ..4 | 5 ..20 |
| 目的 | ヘッダー (タイプ 11) | |
CLOSE| フィールド | Type | 説明 |
| [16]byte | |
ERROR メッセージ
Relay サーバーは、クライアントにエラーが発生したことを通知するために、ERROR| バイト | 1 ..4 | 5 ..20 | 21 |
| 目的 | ヘッダー (タイプ 12) | | |
ERROR| フィールド | Type | 説明 |
| [16]byte | |
| uint8 | |
エラーコード
以下の表は、Relay サーバーがクライアントに送信できるエラーメッセージをそれぞれ説明したものです。| コード | 名前 | 説明 |
| 無効なプロトコルバージョン ( | |
| 非アクティブを理由にプレイヤーがタイムアウトした ( | |
| 認証されていない ( | |
| 割り当て ID とクライアントの不一致 ( | |
| 割り当て ID が見つからない ( | |
| 接続されていない ( | |
| 自己接続は許可されていない ( | |