Skip to content

Commit 2144469

Browse files
committed
DataChannel シグナリングの type: close の定義を追加
1 parent 841e6e2 commit 2144469

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

CHANGES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
- @zztkm
2727
- [ADD] サイマルキャストの映像のエンコーディングパラメーター `scaleResolutionDownTo` を追加する
2828
- @zztkm
29+
- [ADD] Sora から DataChannel シグナリングを切断する際に "type": "close" メッセージを受信する機能を追加する
30+
- DataChannel シグナリングが有効、かつ ignore_disconnect_websocket が true、かつ Sora の設定で data_channel_signaling_close_message が有効な場合に受信することが可能
31+
- @zztkm
2932
- [FIX] Sora から切断された場合の切断処理を修正し適切なエラーを ``MediaChannelHandlers.onDisconnect`` で受け取ることができるようにする
3033
- Sora iOS SDK 2025.1.1 までは Sora から Close Frame を受け取ったり、ネットワークエラーが起きたりしても、WebSocket メッセージ受信失敗に起因する ``SoraError.webSocketError`` しか受信できなかったが、以下の内容を受信できるようになった
3134
- Sora から Close Frame を受け取った場合のステータスコードと理由

Sora/Signaling.swift

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ public enum Signaling {
132132
/// "redirect" シグナリング
133133
case redirect(SignalingRedirect)
134134

135+
/// type: "close" は DataChannel シグナリング利用時に
136+
/// `ignore_disconnect_websocket`: true かつ、`data_channel_signaling_close_message`: true の場合に受信する
137+
case close(SignalingClose)
138+
135139
/// :nodoc:
136140
public static func decode(_ data: Data) -> Result<Signaling, Error> {
137141
do {
@@ -175,6 +179,8 @@ public enum Signaling {
175179
return "switched"
176180
case .redirect:
177181
return "redirect"
182+
case .close:
183+
return "close"
178184
}
179185
}
180186
}
@@ -515,6 +521,15 @@ public struct SignalingRedirect {
515521
public var location: String
516522
}
517523

524+
/// type: "close" シグナリングメッセージを表す
525+
/// Sora から受信するメッセージなのでエンコーダーは実装していない
526+
public struct SignalingClose {
527+
/// ステータスコード
528+
public var code: Int
529+
/// 切断理由
530+
public var reason: String
531+
}
532+
518533
/// "notify" シグナリングメッセージを表します。
519534
public struct SignalingNotify {
520535
// MARK: イベント情報
@@ -692,6 +707,8 @@ extension Signaling: Codable {
692707
self = try .switched(SignalingSwitched(from: decoder))
693708
case "redirect":
694709
self = try .redirect(SignalingRedirect(from: decoder))
710+
case "close":
711+
self = try .close(SignalingClose(from: decoder))
695712
default:
696713
throw SoraError.unknownSignalingMessageType(type: type)
697714
}
@@ -1355,3 +1372,17 @@ extension SignalingRedirect: Decodable {
13551372
location = try container.decode(String.self, forKey: .location)
13561373
}
13571374
}
1375+
1376+
/// :nodoc:
1377+
extension SignalingClose: Decodable {
1378+
enum CodingKeys: String, CodingKey {
1379+
case code
1380+
case reason
1381+
}
1382+
1383+
public init(from decoder: Decoder) throws {
1384+
let container = try decoder.container(keyedBy: CodingKeys.self)
1385+
code = try container.decode(Int.self, forKey: .code)
1386+
reason = try container.decode(String.self, forKey: .reason)
1387+
}
1388+
}

0 commit comments

Comments
 (0)