Связь между мобильным приложением React Native и приложением React.js Hbbtv
Можете ли вы объяснить, как установить связь между приложением Hbbtv React на ТВ и мобильным приложением в React Native? Я реализую клиент SSDP в мобильном приложении React Native для поиска сервера SSDP (это должно быть реализовано на телевизоре). Затем получение IP-адреса этого сервера (как в архитектуре DIAL). Сервер также создает сервер WebSocket. Этот сервер должен запускать приложение Hbbtv, написанное на React.js. Теперь я могу отправлять сообщения из мобильного приложения в приложение Hbbtv React через этот сервер, но я понятия не имею, как реализовать такой сервер SSDP+WebSocket на моем телевизоре.
2 ответа
Для успешной связи приложение Companion Screen должно находиться в той же домашней сети, что и терминал HbbTV (телевизор).
Терминал (телевизор) реализует сервер, предоставляющий конечные точки, которые обеспечивают серверную часть протокола Websocket для клиентов (приложение HbbTV® на терминале и приложение Companion Screen).
Сервер должен иметь возможность принимать соединения после того, как приложение HbbTV® на терминале (телевизоре) вызвало метод getApp2AppLocalBaseURL( ) встроенного объекта HbbTVCSManager и до завершения работы приложения. См.:https://developer.hbbtv.org/references/apis/defined-javascript-apis/companion-screen-discovery-apis/
Терминал (телевизор) обрабатывает запросы на подключение от клиентов (приложение HbbTV® и приложение Companion Screen) в порядке, определенном в пункте 14.5.3 стандарта ETSI TS102 796, и применяет правила сопряжения, определенные в пункте 14.5.4 ETSI TS. 102 796, чтобы определить, следует ли связывать соединения от двух клиентов. Затем он действует как ретранслятор, как определено в пункте 14.5.5 стандарта ETSI TS102 796, для ретрансляции сообщений между двумя парными клиентскими соединениями.
Короче говоря, приложение HbbTV® на терминале (телевизоре) подключается к серверу на терминале (телевизоре), и соединение переходит в состояние ожидания. В этот момент приложение Companion Screen должно подключиться к серверу на терминале, и соединение войдет в состояние ожидания. Терминал (телевизор) должен связать два ожидающих соединения в соответствии со следующими правилами:
- Одно ожидающее соединение должно находиться на локальной конечной точке службы (и поэтому предполагается, что оно поступило от клиента приложения HbbTV®).
- Еще одно ожидающее соединение должно находиться на удаленной конечной точке службы (и, следовательно, предполагается, что оно поступило от удаленного клиента, такого как приложение Companion Screen).
- Часть имени ресурса, используемая в клиентском запросе установления связи, — конечная точка приложения, должна совпадать между обоими ожидающими соединениями.
Эта «тактика» должна дать вам желаемый результат.
Этот проект https://github.com/fraunhoferfokus/cordova-plugin-hbbtv является хорошим примером и может ответить на ваш вопрос. Это плагин Cordova для Android, но он дает вам представление о том, как реализовать клиент для фреймворка, такого как React Native. Мобильное приложение Hello World на странице https://github.com/fraunhoferfokus/cordova-plugin-hbbtv-helloapp/ представляет собой пример использования подключаемого модуля для обнаружения и запуска на телевизоре.
Приложение HbbTV разработано с использованием веб-технологий, таких как в вашем случае React.js, и использует WebSocket для установления соединения с локальным сервером WebSocket, работающим на терминале HbbTV. Эта папка https://github.com/fraunhoferfokus/cordova-plugin-hbbtv-helloapp/tree/master/www содержит пример простого приложения HbbTV с использованием функций CS. Вы можете взять его в качестве эталона для вашего react.js. Основной файл, которому вы должны следовать, это https://github.com/fraunhoferfokus/cordova-plugin-hbbtv-helloapp/blob/master/www/js/cs-app.js . Я надеюсь, что это поможет.