Я установил webrtc в моем приложении IOS для установления аудиовызова.Как только вызов установлен, webrtc открывает соединение для Data Channel.Моя конфигурация объекта канала данных:
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, а с другой стороны у меня есть веб-клиент (реализован webrtc с использованием javascript).Когда веб-клиент отправляет сообщение в приложение IOS, функция, отвечающая за получение сообщения, не срабатывает.
func dataChannel(_ dataChannel: RTCDataChannel, didReceiveMessageWith buffer: RTCDataBuffer) {
print("didReceiveMessageWith \(buffer)")
}
Но когда я отправляю сообщение из IOS App веб-клиенту, Webclient получает сообщение в своей функции onMessage.
Соединение DataChannel открыто и указано, что оно подключено, но я не могу получить сообщение, отправленное свеб-клиент для IOS App.Отправка сообщения из приложения IOS на веб-клиент работает нормально