我已经在IOS应用中实现了webrtc来建立音频通话。建立呼叫后,webrtc将打开数据通道的连接。 我的数据通道对象配置:
let tt = RTCDataChannelConfiguration();
tt.isNegotiated = true
self.datachannel = self.peerConnection.dataChannel(forLabel: "myLabel", configuration: tt)
我还设置了委托函数,以检查数据通道状态并接收来自其他对等方的消息。
RTCDataChannel委托函数
func dataChannelDidChangeState(_ dataChannel: RTCDataChannel) {
print("dataChannelDidChangeState \(dataChannel)")
let str = "Hello World"
let data = str.data(using: String.Encoding.utf8, allowLossyConversion: false)
dataChannel.sendData(RTCDataBuffer.init(data: data!, isBinary: false))
}
func dataChannel(_ dataChannel: RTCDataChannel, didChangeBufferedAmount amount: UInt64) {
print("didChangeBufferedAmount")
}
func dataChannel(_ dataChannel: RTCDataChannel, didReceiveMessageWith buffer: RTCDataBuffer) {
print("didReceiveMessageWith \(buffer)")
}
现在的问题是 一侧有IOS App,另一侧有webclient(使用javascript实现的webrtc)。 当webclient向IOS App发送消息时,负责获取消息的功能不会触发。
func dataChannel(_ dataChannel: RTCDataChannel, didReceiveMessageWith buffer: RTCDataBuffer) {
print("didReceiveMessageWith \(buffer)")
}
但是当我将消息从IOS App发送到webclient时,Webclient的onMessage函数会收到消息。
DataChannel连接已打开,并且已声明已连接,但是我无法接收从Webclient发送到IOS App的消息。 从IOS App发送到Webclient的消息运行正常