데이터 채널을 만들고 싶습니다. 그러나 이것을 구현하는 데 어려움을 겪고 있습니다. "발신자 측"에서 실행되는 코드를 추가했습니다.데이터 채널 Webrtc 스위프트
func initWebRTC() {
RTCInitializeSSL()
peerConnectionFactory = RTCPeerConnectionFactory()
let mandatoryConstraints = ["OfferToReceiveAudio": "true", "OfferToReceiveVideo": "false"]
let optionalConstraints = [ "DtlsSrtpKeyAgreement": "true", "RtpDataChannels" : "true"]
mediaConstraints = RTCMediaConstraints.init(mandatoryConstraints: mandatoryConstraints, optionalConstraints: optionalConstraints)
}
func prepareNewConnection() -> RTCPeerConnection {
var icsServers: [RTCIceServer] = []
icsServers.append(RTCIceServer(urlStrings: ["stun:stun.l.google.com:19302"], username:"",credential: ""))
let rtcConfig: RTCConfiguration = RTCConfiguration()
rtcConfig.tcpCandidatePolicy = RTCTcpCandidatePolicy.disabled
rtcConfig.bundlePolicy = RTCBundlePolicy.maxBundle
rtcConfig.rtcpMuxPolicy = RTCRtcpMuxPolicy.require
rtcConfig.iceServers = icsServers;
peerConnection = peerConnectionFactory.peerConnection(with: rtcConfig, constraints: mediaConstraints, delegate: self)
peerConnection.add(mediaStream);
let tt = RTCDataChannelConfiguration();
tt.isOrdered = false;
tt.isNegotiated = false
self.dataChannel = peerConnection.dataChannel(forLabel: "datachannel", configuration: tt)
self.dataChannel.delegate = self
print("create datachannel")
return peerConnection;
}
많은 사람들이 제안한대로 데이터 채널을 만듭니다. 이 방법 (다음 코드 참조)은 여러 번 호출됩니다. 채널 상태는 2에서 3으로갑니다.
public func dataChannelDidChangeState(_ dataChannel: RTCDataChannel){
print("channel.state \(dataChannel.readyState.rawValue)");
}
수신 측에서는 무엇을해야합니까? 거기에는 아무 일도 없기 때문에? 데이터 채널을 리시버에 바인딩해야합니까? 그렇다면 어떻게 할 수 있습니까?
안녕하세요 당신은 rtcdatachannel의 작동 샘플을 가지고 있습니다. 데이터를받을 수는 있지만 클라이언트와 서버를 모두 원한다면 데이터를 보낼 수는 없습니다. –