WebSocket работает с HTML-файлом, но не работает на размещенной веб-странице. - PullRequest
2 голосов
/ 08 марта 2019

Я пытаюсь использовать 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-сервер)

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

...