DataChannel 経由での RPC 機能

警告

この機能は 実験的機能 のため、正式版では仕様が変更される可能性があります

概要

Sora ではデータチャネルシグナリング利用時に JSON-RPC 2.0 を利用して Sora の一部 API をクライアントから呼び出すことができます。

JSON-RPC 2.0 仕様

  • JSON-RPC 2.0 の仕様に準拠しています

  • method には API とは異なる形式で指定する必要がります

    • 2025.2.0/RequestSimulcastRid のように {導入された Sora のバージョン}/{API 名} の形式で指定します

  • params には API 利用時の JSON を指定します

    • channel_idconnection_id は省略することができます

  • id を付けないことでレスポンスを返さない Notification として利用できます

    • これは Sora 側がレスポンスを返さないことを意味します

メソッド一覧

注釈

method は {導入された Sora のバージョン}/{API 名} という形式になります。

2025.2.0/RequestSimulcastRid

RequestSimulcastRid API

{
   "jsonrpc": "2.0",
   "method": "2025.2.0/RequestSimulcastRid",
   "params": {
      "rid": "r1"
   },
   "id": 1
}

2025.2.0/PutSignalingNotifyMetadata

PutSignalingNotifyMetadata API

{
  "jsonrpc": "2.0",
  "method": "2025.2.0/PutSignalingNotifyMetadata",
  "params": {
    "push": true,
    "metadata": {
      "example_key_1": "example_value_1",
      "example_key_2": "example_value_2"
    }
  },
  "id": 1
}

2025.2.0/PutSignalingNotifyMetadataItem

PutSignalingNotifyMetadataItem API

{
  "jsonrpc": "2.0",
  "method": "2025.2.0/PutSignalingNotifyMetadataItem",
  "params": {
     "push": true,
     "key": "example_key",
     "value": "example_value"
  },
  "id": 1
}

利用できる RPC の指定

この機能を利用する場合は認証時の払い出しで RPC で利用できるメソッド一覧を指定する必要があります。

{
  "allowed": True,
  "rpc_methods": [
     "2025.2.0/RequestSimulcastRid",
  ]
}

type: offer

利用できる RPC メソッド一覧は "type": "offer" のシグナリングメッセージに rpc_methods でクライアントは確認することができます。

{
  "type": "offer",
  "rpc_methods": [
     "2025.2.0/RequestSimulcastRid",
  ]
}

シーケンス図

        sequenceDiagram
   participant C1 as Client1
   participant C2 as Client2
   participant S as Sora
   note over C1,S: C1, C2 共にWebRTC 確立済み
   C1 ->> S: JSON-RPC 2.0 Request<br>PutSignalingNotifyMetadataItem<br>push: true<br>over DataChannel
   note over S: シグナリング通知メタデータ拡張に項目を追加
   S ->> C1: JSON-RPC 2.0 Success Reponse<br>over DataChannel
   note over S: シグナリング通知メタデータ拡張によるプッシュ通知が発生
   S ->> C1: type: push<br>over DataChannel
   S ->> C2: type: push<br>over DataChannel
    
© Copyright 2025, Shiguredo Inc Created using Sphinx 8.2.3