メッセージング機能¶
概要¶
メッセージング機能は 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
}