Я пытаюсь использовать Websocket для удаленного управления LG Smart TV (WebOS 4.0) с помощью JSTVRemote библиотеки JavaScript.
Это означает, что LG SmartTV - сервер веб-сокетов, а мой браузер - клиент веб-сокетов. Браузер отправляет команды для управления телевизором, телевизор выполняет работу (например, уменьшение громкости) и отправляет ответ клиенту.
Эта библиотека использует WebSocket для связи с ТВ:
ws = new WebSocket( "wss://192.168.xxx.xxx:3000" ) ;
ws.onopen = function() {
ws.onmessage = function( event ) {
console.log( event ) ;
alert('command successed!')
}
ws.onclose = function() {
logUpdate( "Connection closed." ) ;
}
}
ws.send(someCommand);
Когда я использую его в локальном файле HTML (откройте его в браузере с помощью файла: // ...), он работает правильно. Событие onmessage
срабатывает и возвращает ответ от телевизора. Кроме того, телевизор выполняет командные задания.
* Chrome, IE и Safari в порядке
Однако, когда я использую его на размещенной веб-странице (откройте тот же HTML-файл с http: // ... или https: //...), Событие onmessage
делает не файл, и он сообщает об ошибке с "WebSocket уже находится в состоянии ЗАКРЫТО или ЗАКРЫТО." Конечно, телевизор не выполняет командных функций.
* Установление соединения, кажется, успешно, потому что новый WebSocket () , ws.onopen () и ws.send () в порядке.
Я попробовал следующий веб-сервер, но они не работают.
- Apache
- IIS
- Веб-сервер QNAP (NAS-сервер)
Кто-нибудь знает причину этого?