diff --git a/Sources/Core/Channel/SKWChannel.h b/Sources/Core/Channel/SKWChannel.h index 4019a0f..f41c1ba 100644 --- a/Sources/Core/Channel/SKWChannel.h +++ b/Sources/Core/Channel/SKWChannel.h @@ -45,6 +45,8 @@ NS_SWIFT_NAME(MemberInit) @property NSString* _Nullable metadata; /// MemberのKeepAliveの更新間隔時間 @property int keepaliveIntervalSec; +/// MemberのKeepAliveの更新間隔時間を超えてChannelからMemberが削除されるまでの時間 +@property int keepaliveIntervalGapSec; @end diff --git a/Sources/Core/Channel/SKWChannel.mm b/Sources/Core/Channel/SKWChannel.mm index 239f681..571a31a 100644 --- a/Sources/Core/Channel/SKWChannel.mm +++ b/Sources/Core/Channel/SKWChannel.mm @@ -457,6 +457,9 @@ - (void)joinWithInit:(SKWMemberInit*)init if (init.keepaliveIntervalSec != 0) { nativeInit.keepalive_interval_sec = init.keepaliveIntervalSec; } + if (init.keepaliveIntervalGapSec != 0) { + nativeInit.keepalive_interval_gap_sec = init.keepaliveIntervalGapSec; + } } dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ diff --git a/Sources/Room/Member/RoomMember.swift b/Sources/Room/Member/RoomMember.swift index 1f7a79c..38652e4 100644 --- a/Sources/Room/Member/RoomMember.swift +++ b/Sources/Room/Member/RoomMember.swift @@ -32,6 +32,13 @@ import SkyWayCore return core.metadata } + /// メンバーサイド + /// + /// このクライアントで生成されたメンバーの場合localになります。 + @objc public var side: Side { + return core.side + } + /// ステート /// /// Leftの場合、このオブジェクトの操作は無効です。 diff --git a/Sources/Room/Room/Room.swift b/Sources/Room/Room/Room.swift index da856ea..9495a76 100644 --- a/Sources/Room/Room/Room.swift +++ b/Sources/Room/Room/Room.swift @@ -87,15 +87,24 @@ import SkyWayCore /// /// Memberの退出はMemberの`leave()`または、権限があればRoomの`leave(_:)`でも退出させることができますが、退出処理を行わずアプリケーションがクラッシュした時、SkyWayを終了した時などは情報に不整合が発生し、RemoteMemberから見るとまだRoomに存在するように見えます。 /// - /// このオプションではSkyWayサーバとのkeepalive時間を設定することでその不整合が起こる時間を設定できます。 + /// このオプションではSkyWayサーバとのkeepalive時間を設定することでその不整合を解消するまでの時間を設定できます。 /// /// 短すぎる設定では、頻繁にサーバに対してリクエストをすることになるのでパフォーマンスが低下する恐れがあります。 public var keepaliveIntervalSec: Int32 = 0 + /// MemberのKeepAliveの更新間隔時間を超えてRoomからMemberが削除されるまでの時間(秒) + /// + /// デフォルトは30秒です。 + /// + /// `keepaliveIntervalSec`と同様に、SkyWayサーバにおけるMemberの存在情報の不整合を解消するまでの時間を設定できます。 + /// + /// 短すぎる設定では、正常な通信であってもRoomから退出させられてしまう恐れがあります。 + public var keepaliveIntervalGapSec: Int32 = 0 func toCore() -> MemberInit { let core: MemberInit = .init() core.name = name core.metadata = metadata core.keepaliveIntervalSec = keepaliveIntervalSec + core.keepaliveIntervalGapSec = keepaliveIntervalGapSec return core } }