首页 > 解决方案 > WebSocket 适用于 HTML 文件,但在托管网页上失败

问题描述

我正在尝试使用 Websocket 通过使用JSTVRemote JavaScript 库来远程控制 LG 智能电视(WebOS 4.0)。

这意味着 LG SmartTV 是一个 websocket 服务器,而我的浏览器是一个 websocket 客户端。浏览器发送命令来控制电视,电视完成工作(例如降低音量)并将响应发送回客户端。

这个库使用 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 文件中使用它时(在浏览器中使用 file://... 打开它),它可以正常工作。onmessage事件触发并返回来自 TV 的响应。此外,电视还可以完成指挥工作。

*Chrome、IE 和 Safari 都可以

但是,当我在托管网页中使用它时(使用 http://... 或https: //... 打开相同的 HTML 文件),该onmessage事件不会归档,并且报告错误“WebSocket 已经处于关闭或关闭状态。”。当然,电视不做指挥的工作。

*连接建立似乎成功了,因为new WebSocket()ws.onopen()ws.send()都可以。

我试过关注网络服务器,但它们不起作用。

有谁知道它的原因?

标签: javascripthtmlwebsocketweboslg

解决方案


推荐阅读