WebSocket работает с HTML-файлом, но сбой на размещенной веб-странице

#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)

Кто-нибудь знает причину этого?