コンテンツにスキップ

WebSockets⚓︎

ブロックチェーン上でイベントが発生したときにリアルタイムに更新を取得するために、Symbol では WebSockets を公開しています。

クライアントアプリケーションは WebSocket 接続を開き、一意の識別子を取得できます。 この識別子を使用することで、アプリケーションは更新のために REST API を継続的にポーリングする代わりに、利用可能な任意のチャネルをサブスクライブできます。

チャネルでイベントが発生すると、 REST Gateway はサブスクライブしているすべてのクライアントにリアルタイムで通知を送信します。

WebSocket URI は HTTP リクエスト URI と同じホストとポートを共有しますが、 ws:// プロトコルを使用します。 エンドポイントは /ws です。例: ws://localhost:3000/ws

送信するサブスクリプションメッセージと受信する更新メッセージはどちらも JSON 形式を使用し、これらについて次に説明します。

警告

アイドル状態が長すぎると、WebSocket 接続は警告なしに切断されます。

再接続時にチャネルは自動的に再サブスクライブされません。

レスポンス形式⚓︎

すべてのチャネルは同じレスポンス形式を使用します。

レスポンスボディ
{
    "topic": "{subscribed-channel}",
    "data": { ... }
}
  • topic にはサブスクライブしたチャネルの名前が含まれるため、同じWebSocketを使用して複数のチャネルを監視できます( topic は、サブスクライブ時にリクエストボディで提供される subscribe フィールドと一致します)。
  • data はチャネル固有のオブジェクトです。以下のリストに記載されている各チャネルで、返されるデータオブジェクトについて説明しています。

チャネル⚓︎

block⚓︎

block
新しいブロックが作成されるたびに、サブスクライブしているクライアントに通知します。 返される各メッセージには、1つのブロックに関する情報が含まれます。
{
    "uid": "{uid}",
    "subscribe": "block"
}

finalizedBlock⚓︎

finalizedBlock
ブロックのセットが ファイナライズ されるたびに、サブスクライブしているクライアントに通知します。 返される各メッセージには、ファイナライゼーションラウンドで最も高いブロック(最新のブロック)に関する情報が含まれます。 それより低いブロック高を持つすべてのブロックは、ファイナライズされたと見なされます。
    {
        "uid": "{uid}",
        "subscribe": "finalizedBlock"
    }

confirmedAdded⚓︎

confirmedAdded/{address}
指定されたアドレスに関連するトランザクションがブロックに含まれたときに、サブスクライブしているクライアントに通知します。 返される各メッセージには、1つの承認済みトランザクションに関する情報が含まれます。
{
    "uid": "{uid}",
    "subscribe": "confirmedAdded/{address}"
}

unconfirmedAdded⚓︎

unconfirmedAdded/{address}
指定されたアドレスに関連するトランザクションが、ブロックに含まれるのを待つ未承認(unconfirmed)状態になったときに、サブスクライブしているクライアントに通知します。 返される各メッセージには、1つの未承認トランザクションに関する情報が含まれます。

このメッセージを受信する考えられるシナリオは次のとおりです。 トランザクションが /transactions PUT HTTP エンドポイントを介してネットワークにアナウンスされた場合、または アグリゲートボンデッドトランザクション が必要なすべての連署者を集め、状態が partial から unconfirmed に変更された場合です。

{
    "uid": "{uid}",
    "subscribe": "unconfirmedAdded/{address}"
}

unconfirmedRemoved⚓︎

unconfirmedRemoved/{address}
指定されたアドレスに関連するトランザクションが unconfirmed 状態を抜けたときに、サブスクライブしているクライアントに通知します。 返される各メッセージには、未承認ではなくなったトランザクションのハッシュが含まれます。

このメッセージを受信する考えられるシナリオは次のとおりです。 トランザクションが承認された場合、またはデッドラインに達してトランザクションがブロックに含まれなかった場合です。

{
    "uid":"{uid}",
    "subscribe":"unconfirmedRemoved/{address}"
}

トランザクションのハッシュ。

partialAdded⚓︎

partialAdded/{address}
指定されたアドレスに関連する アグリゲートボンデッドトランザクション が、必要なすべての連署が完了するのを待つ partial 状態になったときに、サブスクライブしているクライアントに通知します。 返される各メッセージには、追加された1つのパーシャルトランザクションに関する情報が含まれます。
{
    "uid": "{uid}",
    "subscribe": "partialAdded/{address}"
}

partialRemoved⚓︎

partialRemoved/{address}
指定されたアドレスに関連する アグリゲートボンデッドトランザクションpartial 状態を抜けたときに、サブスクライブしているクライアントに通知します。 返される各メッセージには、削除された1つのパーシャルトランザクションのハッシュが含まれます。

このメッセージが発行される考えられるシナリオは次のとおりです。 必要なすべての 連署 を受信してトランザクションが unconfirmed になった場合、またはデッドラインに達してトランザクションがブロックに含まれなかった場合です。

{
    "uid": "{uid}",
    "subscribe": "partialRemoved/{address}"
}

トランザクションのハッシュ。

cosignature⚓︎

cosignature/{address}
指定されたアドレスに関連する 連署 が、 partial 状態の アグリゲートボンデッドトランザクション に追加されたときに、サブスクライブしているクライアントに通知します。 返される各メッセージには、連署付きトランザクションが1つ含まれます。
{
    "uid": "{uid}",
    "subscribe": "cosignature/{address}"
}

status⚓︎

status/{address}
指定されたアドレスに関連するトランザクションがエラーを通知したときに、サブスクライブしているクライアントに通知します。 返される各メッセージには、1つのエラーメッセージとトランザクションのハッシュが含まれます。
{
    "uid": "{uid}",
    "subscribe": "status/{address}"
}