Crestron 网络X 面板 - 开始
重要:WebX 没有导入语句的面板实例
使用 WebXPanel.default 访问 WebXPanel 实例,如果项目不使用 ES6 import 发言.
安装
通过在 WebXPanel 项目的根文件夹中运行以下命令之一来提供您的软件包 :
# NPM
npm link
添加 WebX 通过在 CH5 工程的根文件夹中运行以下命令之一,对一个 CH5 工程进行面板:
# NPM
npm link "@crestron/ch5-webxpanel"
请确保 WebXPanel 是第一个在CH5 计划中初始化的库!
所有配置参数都是可选的 。 只应定义需要覆盖的参数。 对于不应定义的参数,不要通过空字符串值.
示例:(app.module.ts)
import WebXPanel, {WebXPanelConfigParams, isActive} from "@crestron/ch5-webxpanel";
const configuration: Partial<WebXPanelConfigParams> = {
host: 'ip_address | hostname', // defaults to window.location.host
ipId: '3|0x03', // string representing a hex value. Might contain "0x" or not. Defaults to "0x03"
roomId: 'virtual_control_room_id', // defaults to empty string
};
// other rarely used options
// port: 49200, // port for Secure WebSocket connection. Defaults to 49200
// tokenUrl: 'https://url/cws/websocket/getWebSocketToken', // defaults to `${location.origin}/cws/websocket/getWebSocketToken`,
// tokenSource: 'CSSelf|Fusion', // defaults to CSSelf
const webXPanelFactory = () => () => {
if (isActive) {
WebXPanel.initialize(configuration);
}
}
// ...
@NgModule({
// ...
providers: [
{ provide: APP_INITIALIZER, useFactory: webXPanelFactory, multi: true },
// ...
],
// ...
})
// ...
检查WebX是否 面板活动
import {isActive} from "@crestron/ch5-webxpanel";
console.log(`WebXPanel isActive: ${isActive}`);
检查 WebXPanel 版本并构建日期
import {getVersion, getBuildDate} from "@crestron/ch5-webxpanel";
console.log(`WebXPanel version: ${getVersion()}`);
console.log(`WebXPanel build date: ${getBuildDate()}`);
合同文件
WebXPanel 库将找到名为合同的文件 contract.cse2j cH5项目中的以下路径: ./config/contract.cse2j。如果在指定的路径没有找到合同文件,WebXPanel将返回空合同文件.
网络X 小组记录
WebXPanel 库提供了默认启用的日志器,日志级别设定为 WARN。这可以从CH5项目中更改,如果需要,可以在浏览器控制台中看到日志.
import {
getDebuggingState,
enableDebugging,
disableDebugging,
getLogLevel,
setLogLevel,
LogLevel
} from "@crestron/ch5-webxpanel";
const isLoggingEnabled = getDebuggingState();
// to enable logging
enableDebugging();
// to disable debugging
disableDebugging();
// get current log level
getLogLevel();
// set log level to LOG
setLogLevel(LogLevel.LOG);
正在收听 WebX小组事件
WebXPannel发送的所有事件都是自定义事件. 每项活动的有关数据可在 detail 属性.
现有事件及其描述
| 事件名称 | 调度原因 | 其他资料 |
|---|---|---|
| 连接( W) | 已建立成功的 WebSocket 连接 | 类似 WebSocket.onopen |
| (原始内容存档于2019-10-21) (英语). DISCONNECT WS | WebSocket 连接已断开 | 类似 WebSocket.onclose |
| 错误 WS | 在websocket上发生错误 | 类似 WebSocket.onerror |
| FETCH TOKEN FAIED (英语) | 获取核聚变令牌失败 | |
| WEB WORKER 发音 | 当前浏览器中不支持工作人 | |
| 连接( C) | 通过 CIP 协议成功连接到控制系统 | 提供当前连接的信息 . 不一样 CONNECT_WS |
| 分解NECT CIP | 在CIP协议上与控制系统断开连接 | 不一样 DISCONNECT_WS |
| 自动失效 | 认证到控制系统失败 | |
| (原始内容存档于2019-10-21) (中文(简体) ) | 控制系统需要验证符 | |
| (原始内容存档于2018-09-21) (英语). LICENSE WS | 许可证发生变化(例如,获得许可证、许可证/试用期更新) | |
| 无授权 | 这个 /cws/websocket/getWebSocketToken 端点响应是重定向 |
听从 LICENSE_WS cH5项目的事件
import WebXPanel, {WebXPanelEvents} from "@crestron/ch5-webxpanel";
WebXPanel.addEventListener(WebXPanelEvents.LICENSE_WS, ({detail}) => {
const {
resourceAvailable,
controlSystemSupportsLicense,
licenseApplied,
licenseNotRequired,
licenseHasExpiry,
licenseDaysRemaining,
trialPeriod,
trialPeriodDaysRemaining,
licenseNotRequired
} = detail;
// other callback code
});
听从 NOT_AUTHORIZED cH5项目的事件
WebXPanel.addEventListener(WebXPanelEvents.NOT_AUTHORIZED, ({detail}) => {
const {redirectTo} = detail;
console.log(`Received a redirect to: ${redirectTo}`);
// login on the redirectTo page then try authenticating
WebXPanel.authenticate();
// or refreshing the page
window.reload();
});
听从 CONNECT_CIP cH5项目的事件
WebXPanel.addEventListener(WebXPanelEvents.CONNECT_CIP, ({detail}) => {
const {url, ipId, roomId, tokenSource, tokenUrl} = detail;
console.log(`Connected to ${{url, ipId, roomId, tokenSource, tokenUrl}}`);
});
听从 DISCONNECT_CIP cH5项目的事件
WebXPanel.addEventListener(WebXPanelEvents.DISCONNECT_CIP, ({detail}) => {
const {reason} = detail;
console.log(`Disconnected from CIP. Reason: ${reason}`);
});
测试
# NPM
npm test
构建
# NPM
npm build