MediaChannel

public final class MediaChannel
extension MediaChannel: CustomStringConvertible

一度接続を行ったメディアチャネルは再利用できません。 同じ設定で接続を行いたい場合は、新しい接続を行う必要があります。

接続が解除されるタイミング

メディアチャネルの接続が解除される条件を以下に示します。 いずれかの条件が 1 つでも成立すると、メディアチャネルを含めたすべてのチャネル (シグナリングチャネル、ピアチャネル、 WebSocket チャネル) の接続が解除されます。

  • シグナリングチャネル (SignalingChannel) の接続が解除される。
  • WebSocket チャネル (WebSocketChannel) の接続が解除される。
  • ピアチャネル (PeerChannel) の接続が解除される。
  • サーバーから受信したシグナリング ping に対して pong を返さない。 これはピアチャネルの役目です。

イベントハンドラ

接続情報

  • クライアントの設定

    Declaration

    Swift

    public let configuration: Configuration
  • 最初に type: connect メッセージを送信した URL (デバッグ用)

    Sora から type: redirect メッセージを受信した場合、 contactUrl と connectedUrl には異なる値がセットされます type: redirect メッセージを受信しなかった場合、 contactUrl と connectedUrl には同じ値がセットされます

    Declaration

    Swift

    public var contactUrl: URL? { get }
  • 接続中の URL

    Declaration

    Swift

    public var connectedUrl: URL? { get }
  • メディアチャンネルの内部で利用している RTCPeerConnection

    Declaration

    Swift

    public var native: RTCPeerConnection? { get }
  • クライアント ID 。接続後にセットされます。

    Declaration

    Swift

    public var clientId: String? { get }
  • バンドル ID 。接続後にセットされます。

    Declaration

    Swift

    public var bundleId: String? { get }
  • 接続 ID 。接続後にセットされます。

    Declaration

    Swift

    public var connectionId: String? { get }
  • 接続状態

    Declaration

    Swift

    public private(set) var state: ConnectionState { get set }
  • 接続中 (state == .connected) であれば true

    Declaration

    Swift

    public var isAvailable: Bool { get }
  • 接続開始時刻。 接続中にのみ取得可能です。

    Declaration

    Swift

    public private(set) var connectionStartTime: Date? { get }
  • 接続時間 (秒) 。 接続中にのみ取得可能です。

    Declaration

    Swift

    public var connectionTime: Int? { get }

接続中のチャネルの情報

  • 同チャネルに接続中のクライアントの数。 サーバーから通知を受信可能であり、かつ接続中にのみ取得可能です。

    Declaration

    Swift

    public private(set) var connectionCount: Int? { get }
  • 同チャネルに接続中のクライアントのうち、パブリッシャーの数。 サーバーから通知を受信可能であり、接続中にのみ取得可能です。

    Declaration

    Swift

    public private(set) var publisherCount: Int? { get }
  • 同チャネルに接続中のクライアントの数のうち、サブスクライバーの数。 サーバーから通知を受信可能であり、接続中にのみ取得可能です。

    Declaration

    Swift

    public private(set) var subscriberCount: Int? { get }

接続チャネル

  • ストリームのリスト

    Declaration

    Swift

    public var streams: [MediaStream] { get }
  • 最初のストリーム。 マルチストリームでは、必ずしも最初のストリームが 送信ストリームとは限りません。 送信ストリームが必要であれば senderStream を使用してください。

    Declaration

    Swift

    public var mainStream: MediaStream? { get }
  • 送信に使われるストリーム。 ストリーム ID が configuration.publisherStreamId に等しいストリームを返します。

    Declaration

    Swift

    public var senderStream: MediaStream? { get }
  • 受信ストリームのリスト。 ストリーム ID が configuration.publisherStreamId と異なるストリームを返します。

    Declaration

    Swift

    public var receiverStreams: [MediaStream] { get }

接続

  • 接続を解除します。

    Declaration

    Swift

    public func disconnect(error: Error?)

    Parameters

    error

    接続解除の原因となったエラー

  • DataChannel を利用してメッセージを送信します

    Declaration

    Swift

    public func sendMessage(label: String, data: Data) -> Error?