javascript - 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()都可以。
我试过关注网络服务器,但它们不起作用。
- 阿帕奇
- IIS
- QNAP 的 Web 服务器(NAS 服务器)
有谁知道它的原因?
解决方案
推荐阅读
- django - 在 Django simple-jwt 令牌身份验证中获取后端中的当前刷新令牌
- javascript - 谷歌表格功能不会在另一个功能之后运行
- azure - 请求快照列表时,Azure ComputeManagementClient 不返回响应
- android - 失败:DatabaseError:Permission denied Firebase 正在创建用户但数据库未更新
- android - 如何使用 xamarin 在 android 上创建文件?
- html - 如何在不包含整个文件的情况下在 css 中使用 PHP 变量?
- python - 创建一个简单的 tkinter GUI 时出现问题,该 GUI 在单击时显示文件夹中文本文件的名称及其内容
- gradle - 在 gradle 依赖中,为什么 API 配置会丢弃所有传递依赖?
- flutter - FormatException:意外字符(在字符 7 处)
- keras - ValueError:无法从名称“b'usman”中查找 TPU 元数据。请仔细检查 TPUClusterResolver 构造函数中的 tpu 参数