Я использую PJSIP
клиент для обработки VOIP
звонков. В настоящее время у меня установлены два сервера.
1 - test1.myvoipserver.com (поддерживается только IPv4)
2 - test2.myvoipserver.com (только поддержка IPv6)
На стороне клиента я проверяю, принадлежит ли ip пользователя семейству IPv4
, чем я маршрутизирую вызовСервер test1.myvoipserver.com, который поддерживает IPv4
.
Если ip пользователя принадлежит семейству IPv6
, я направляю вызов с test2.myvoipserver.com, который поддерживает только IPv6
.
Все звонки работают нормально, кроме приведенного ниже сценария.
Сценарий:
Предположим, у пользователя есть два доступных интернет-соединения.
4G - (Только на IPv6)
Wifi - (Только на IPv4)
Пользователь совершил вызов на 4G, вызов был принят Стороной B, и медиапакеты передаются нормально.Во время разговора пользователь начинает перемещаться, где доступен Wifi, его мобильный интернет автоматически переключается на Wifi.В этот момент медиа-пакеты будут потеряны, что понятно.Я хочу отключить текущий вызов и сделать новый вызов снова с сервера IPv4
, так как Wi-Fi включен IPv4
.
Фактический результат : в Интернете изменяется с IPv6
на IPv4
Я принудительно отключаю текущий вызов, но вызов не прерывается немедленно на стороне A и B, он будет отключен через 2 минуты (вероятно, когда pjsip / server отправляет тайм-аут).
Ожидаемый результат : вызов долженнемедленно отключиться как от абонента A, так и от абонента B
Мое понимание : поскольку мой текущий вызов был на сервере IPv6
, но новый ip мое устройство получает IPv4
и мой текущий вызовсервер не поддерживает адрес IPv4
, поэтому при отправке сообщения Bye от клиента сервер не отправляет OK / ACK.
Примечание. Эта проблема связана с PSTN
Calls.