#javascript #html #websocket #webos #lg
#javascript #HTML #websocket #webos #lg
Вопрос:
Я пытаюсь использовать Websocket для удаленного управления телевизором LG Smart TV (WebOS 4.0) с помощью библиотеки JavaScript JSTVRemote.
Это означает, что LG SmartTV является сервером websocket, а мой браузер — клиентом websocket. Браузер отправляет команды для управления телевизором, телевизор выполняет задание (например, уменьшает громкость) и отправляет ответ обратно клиенту.
Эта библиотека использует WebSocket для связи с TV:
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-файле (открываю его в браузере с помощью file:// …), он работает правильно. onmessage
Срабатывает событие и возвращает ответ от TV. Кроме того, телевизор выполняет командную работу.
* Chrome, IE и Safari в порядке
Однако, когда я использую его на размещенной веб-странице (открываю тот же HTML-файл с http:// … или https: // ...), onmessage
событие не отображается, и оно сообщает об ошибке «WebSocket уже находится в закрытом состоянии.». Конечно, телевизор не выполняет работу команды.
* кажется, что установление соединения прошло успешно, поскольку новые WebSocket(), ws.onopen() и ws.send() работают нормально.
Я пробовал следующий веб-сервер, но они не работают.
- Apache
- IIS
- Веб-сервер QNAP (сервер NAS)
Кто-нибудь знает причину этого?