JavaScript
Разработка веб-сайтов
Разработка систем связи
23 мая 2012

Принцип работы SIP клиента в браузере

Пообщавшись в комментариях к посту, я понял, что не все до конца понимают принцип работы SIP в браузере. Поэтому, решил экспромтом написать небольшую статью, где в общих чертах раскрыть эту тему.




Действующие лица:

HTTP сервер


Ничего особенного от него не требуется, только поддержка HTTP протокола.

SIP сервер


Помимо обычных для SIP протоколов — UDP, TCP, TLS, требуется поддержка WebSocket. WebSocket очень простой протокол, работает он следущим образом:
  • клиент подключается к серверу по TCP или TLS
  • передает HTTP запрос, в котором есть признак того, что клиент хочет переключиться на WebSocket
  • сервер отвечает 101 Protocol Switching
  • WebSocket подключение готово для передачи данных в дуплексном режиме, это практически TCP с небольшим заголовком для каждого блока передаваемых данных

В некоторых заголовках SIP сообщения есть информация о протоколе транспортного уровня, например:

Via: SIP/2.0/UDP 192.168.1.1;branch=z9hG4bKyQz1234567

А так как WebSocket не описан в основном документе по SIP, потребовалось расширение, это еще не стандарт, но его уже можно использовать. В этом документе нет принципиальных изменений rfc3261, по большой части он просто разрешает очевидные вещи, например, такой заголовок:

Via: SIP/2.0/WS df7jal23ls0d.invalid;branch=z9hG4bKyQz1234567

Браузер


Здесь все сложнее, требуется целый букет технологий: WebSocket для подключения к SIP серверу; SIP стэк, который можно реализовать на JavaScript; WebRTC для передачи аудио и видео.

Как оно работает


Уже наверное понятно, прелесть всей схемы в том, что не требуется никаких согласующих протоколы агентов. Клиент в браузере является полноценным участником и взаимодействует напрямую с любым SIP сервером, и любыми клиентами, например, с хардварным IP телефоном. Единственное требование — это поддержка WebRTC кодеков.

Как потестировать


Информацию о том может ли Asterisk общаться по WebSocket мне найти не удалось. Но есть другие SIP сервера с поддержкой WebSocket, они конечно уступают по функционалу, но для тестирования его достаточно. Например, сервер для Windows, начиная с версии 3.2 поддерживает WebSocket и даже имеет встроенный HTTP сервер.
+26
10,8k 162
Комментарии 11
Похожие публикации
Популярное за сутки