メッセージング機能

概要

メッセージング機能は WebRTC の DataChannel を利用して、データの送受信を行う機能です。

詳細は Sora ドキュメント メッセージング機能 を参照してください。 また、サンプルアプリケーション を用意していますのでこちらも参考にしてください。

メッセージを送受信する

Sora 接続時にメッセージング用 DataChannel を設定する

Sora の 接続時に Configuration.dataChannels に メッセージング用 DataChannel を指定できます。 JSONSerialization で JSON に変換可能な形式で指定します。

// 接続の設定
var config = Configuration(url: soraURL,
                           channelId: soraChannelId,
                           role: role,
                           multistreamEnabled: true)

// DataChannel 経由のシグナリングを有効にする
config.dataChannelSignaling = true

// メッセージング機能に利用する DataChannel を指定する
config.dataChannels = [[
          "label": "#spam",
          "direction": "sendrecv",
      ], [
          "label": "#egg",
          "max_retransmits": 0,
          "ordered": false,
          "protocol": "abc",
          "compress": false,
          "direction": "recvonly",
]]

メッセージを受信する

Configuration.mediaChannelHandlers.onDataChannelMessage を利用してメッセージの受信を行います。バイナリデータ (Data 型) での受信になりますので適宜必要な型に変換してください。

// メッセージ受信時の処理をハンドラーに定義する
config.mediaChannelHandlers.onDataChannelMessage = { (mediaChannel, label, data) in
  // label をチェックする
  guard label.starts(with: "#spam") else {
    return
  }
  ...
}

メッセージを送信する

MediaChannel.sendMessage を利用してメッセージの送信を行います。バイナリデータ (Data 型) の送信のみ可能です。文字列を送信したい場合はバイナリデータに変換してください。

// メッセージを送信する
// type: switched を受信した後からメッセージが送信できる
let error = mediaChannel.sendMessage(label: "#spam", data: "egg".data(using: .utf8)!)
guard error == nil else {
    // エラー処理
    ...
    return
}
© Copyright 2018-2022, Shiguredo Inc. Created using Sphinx 5.0.2