返回 登录
0

云网关服务

阅读34997

云网关

云网关管理从云端发送的数据包和通知。数据包可以是能被PredixMachine及其处理的命令、容器、软件或配置信息或PredixMachine及其能与之通信的任意应用程序。例如,云网关下载命令并将其交给命令调度程序,后者将命令交给对应的命令处理程序。
• 云网关根据以下三种情况之一与边缘网关(云端)同步,管理状态上传和任务下载:
1.机器上运行的一个应用程序发送了同步请求
2.服务器发送事件 (SSE, Server Sent Events)
• 3.云网关配置内设置的轮询间隔
• SSENotifications 使用SSE与服务器建立连接,等待通知。只有当 serverNotificationEnabled 属性设置为 true时才会启动。
• GatewayThread 是一个定时器,用于在经过 pollingInterval 配置属性内指定的时间后,使GatewayService与云同步。
• 存储和转发为可选项。如果PredixMachine的镜像机器图像未包含存储和转发,任务状态将保存在内存中,直到下一次同步。
注:
如果机器重启,保存在内存中的任务状态可能会丢失。
下图展示了云网关与云端的各种同步方式。
图片描述

端到端命令流

云网关如下管理端到端命令流:
1. 从云端下载命令。
2. 将命令发送给命令调度程序。
3. 命令调度程序将命令交给相应的命令处理程序。
4. 命令处理程序执行命令,根据命令状态调用ICloudGateway。
如果命令是针对应用程序容器,在DataBus命令处理程序将状态提交给ICloudGateway前,会发生下列步骤:
a. 假设命令是针对应用程序容器,DataBus命令处理程序收到命令后,将命令发布给DataBus。
b. 订阅命令发布目的地主题的容器接收并执行命令。
c. 命令得到处理后,应用程序容器发布命令状态。
d. DataBus命令处理程序也订阅了DataBus,接收从应用程序容器发布的命令状态。
e. DataBus命令处理程序根据命令状态调用ICloudGateway。
5. 云网关将状态保存到存储和转发中(如适用),直到下一次与云端同步或云端发出命令处理请求。
图片描述

云网关消费者配置

Maven依赖项
消费此服务需要下列Maven依赖项:
图片描述
OSGI导入
消费捆绑束组件(bundle)需要下列OSGi导入:
图片描述

获取云网关服务

使用声明式服务注入 ICloudGateway 服务。
下例展示了如何注入 ICloudGateway 服务:
图片描述

配置云网关

  1. 导航至
    <Predix Machine runtime container location>/configuration/machine
  2. 打开com.ge.dspmicro.cloud.gateway.config 文件,设置以下属性:
    图片描述

使用云网关API

查看云网关Javadoc API,了解如何使用云网关。
1. 导航至下列文件,将压缩包内的所有文件解压:<SDK installation location>/docs/apidocs.zip.
2. 导航至Javadoc API,路径为:<SDK installation location>/docs/apidocs/index.html,在左侧面板找到并点击 com.ge.dspmicro.cloud.gateway.api 。
通过云网关API,可以就命令、事件、告警和软件更新与云端进行会话。

图片描述

数据包处理程序服务

使用数据包处理程序服务配置第三方数据包下载位置。
如要下载自定义数据包、使用自己的安装程序安装或从EdgeManager向设备下载大数据包时,可使用数据包处理程序服务。

配置数据包处理程序

注:
必须提供自己的安装程序服务,用以监测数据包处理程序配置文件内指定的安装目录。
1. 导航至<Predix Machine runtime container location>/configuration/machine,复制一份默认数据包处理程序配置文件com.ge.dspmicro.packagehandler.machine.config。
2. 将文件重命名,在连字符后添加一个不同的名字或编号,例如:com.ge.dspmicro.packagehandler-bob.config.
3. 配置数据包处理程序的名称和安装路径。
图片描述
4. 配置值示例:
5.图片描述

6.4. 数据包经过安装服务处理后,必须在图片描述 /appdata/packageframework目录内放置一个“status”JSON文件。
注:
<Status>.json 文件必须包含所下载数据包的名称。
例如:
所下载数据包的名称:A7F4FA68-B76E-4185-8C21-316CF57DAE2F.APPLICATION.deviceid-version.zip
期望的json名称:A7F4FA68-B76E-4185-8C21-316CF57DAE2F.APPLICATION.deviceid-version.json
JSON文件必须包含以下四个字段:
图片描述

格式化.config文件(不是 .cfg 文件)内的属性时,使用类型字符,后跟值的引用字符串表示。例如,一个布尔型属性=B”true”。小写类型字符表示基本数据。字符串的类型可以省略。下表列出了类型和对应的类型字符:

图片描述

数组格式为属性=<类型>[”<值1>”,”<值2>”]。例如,整型数组属性=I[”1”, “2”, “3”]。为清晰起见,可使用反斜杠分隔。
示例:
图片描述

数据包处理程序执行日志和签名验证

如要在EdgeManager内保存安装执行日志信息,必须将日志信息保存到一个文件内,用所下载数据包的名称作为文件名。
文件扩展名必须为.log,保存到<machine>/logs/installations目录内。
签名验证
日志保存后,必须将签名文件放到<machine>/appdata/packageframework目录内。这样可以通知Predix机器检查具有此数据包ID的.log文件,进行上传。
注:
只有.zip和zip.sig文件都位于install文件夹后才能进行安装。
安装前,使用/yeti/com.ge.dspmicro.yetiappsignature-{version}.jar验证.zip文件的签名。验证后,还会把文件的所有内容解压到当前文件夹内。
下面展示了使用package.zip和package.zip.sig文件运行验证过程和解压的示例:
图片描述
注:
安装后,自定义数据包处理程序应删除压缩包和多余文件,以节省硬盘空间。
示例
这是一个脚本示例,作为自变量,提取放置在你的install文件夹中的.zip文件(数据包id)的基础文件名。然后检查签名,创建JSON日志文件后返回。用于测试目的,并不清除任何文件。
图片描述

将数据包上传至EdgeManager

数据包处理程序服务配置完成并创建了安装脚本后,可以将数据包上传至EdgeManager ,向注册设备部署。
1. 创建一个数据包,包含配置和你要安装的应用程序。
2. 创建一个install目录, 包含install.sh (Linux或Mac)或install.bat (Windows) 脚本。
1. 登录EdgeManager。
2. 在左侧导航窗格内,点击存储库。
3. 在Predix存储库内,点击上传。
4. 在上传对话框内输入:
o 名称– (必填) 软件数据包的名称。
o 供应商 – 设备供应商。
o 类型 – (必填) 可选择以下选项:
 应用程序 – 设备的应用程序软件。
 系统 – 管理设备硬件和资源的软件。
 配置 – 设备配置软件。
 容器 – Docker容器将你的应用程序软件打包成一个标准单元,以实现应用程序部署自动化。
o 版本 – (必填) 软件版本。
o 描述 – 软件或容器的说明。描述应有明确意义,例如,添加作为应用程序推送目的地的设备组位置。
o 备注 – 选填,可以添加其他备注。
注:
备注最多不能超过1024个字符。
o 数据包处理程序 – 你配置的数据包处理程序名称。
5. 点击选择文件,选择要上传到存储库内的文件。
6. 点击上传。
7. 在确认上传对话框内,点击完成。
Linux/Mac OS示例:
1. 新建一个文件夹,命名为<machine>bob-install
2. 将示例脚本置于该文件夹内,命名为bob_yeti.sh。
3. 收到两个新文件(<package-id>.zip和<package-id>.zip.sig)后,运行脚本, p<package-id> 作为自变量,例如: sh bob_yeti.sh <package-id>
这将把压缩包内容解压到名为”tmp”的子文件夹内,返回 success 状态。
4. 解压后,脚本创建JSON和.log 文件,分别将其置于正确的位置。Predix机器然后将其推送回EdgeManager。
5. EdgeManager显示所下载数据包的正确安装信息。
相关概念
EdgeManager存储库概述

设备详情服务

设备详情服务检索设备的动态信息。
下表显示了设备详情服务提供的信息。
表1设备详情服务分类
图片描述

对供应商提供信息的要求

以下通用准则适用于供应商提供的信息:
• 信息文件必须使用.json扩展名。使用其他扩展名的文件将被忽略。
• JSON文件必须含有全部信息。例如,softwareInfo.json必须包含安装的所有软件。边缘网关通过先后执行“全部删除”和“全部插入”操作,将旧信息替换为新信息。
• 新状态文件必须覆盖旧状态文件,以保证读取最新状态。
• 读取成功后,文件被删除。
• 无效文件被重命名为<filename>.bad.<timestamp>,用于调试。无效文件可以是无效的JSON文件或含有不匹配protobuf定义属性的有效JSON文件。

设备信息JSON要求

设备信息含有硬件、SIM卡和属性的JSON 要求。
设备信息文件必须带有.json 扩展名,置于指定外部位置。默认位置为<PREDIX_MACHINE_ROOT>/appdata/devicedetail/deviceinfo
硬件信息的JSON要求
Hardwareinfo.json文件具有以下要求:
• hardwareInfo 应始终包含全套硬件。Edge Manager服务将旧信息替换为新信息。
• hardwareInfo 属性为随机键值。键(如下例中的”numberOfProcessors“)为字符串。值包含了数据值和数据类型的字符串表示。支持数据类型的完整清单参见proto定义。
• 其他字段,如类别,制造商,型号,固件等为定义字段。
以下为硬件信息文件示例 (hardwareInfo.json):
图片描述
SIM卡信息
siminfo.json文件具有以下要求:
• SimInfo 应始终包含全套SIM卡信息。EdgeManager服务将旧信息替换为新信息。
• SimInfo 属性为随机键值。键(如下例中的”firmware”)为字符串。值包含了数据值和数据类型的字符串表示。支持数据类型的完整清单参见proto定义。
• Timestamp字段必须为RFC3399格式,默认为Unix时间戳(epoch time,格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)新纪元时间。
以下为SIM卡信息JSON文件示例(simInfo.json):
图片描述
链接内容
相关参考
设备详情Protobuf定义

设备状态JSON要求

状态信息包含电源和连接状态的JSON要求。
设备状态文件必须带有.json 扩展名,置于指定外部位置。默认位置为<PREDIX_MACHINE_ROOT>/appdata/devicedetail/devicestatus
设备状态文件的JSON要求包括:
• 状态更新时,写入状态文件。新状态文件应总是覆盖旧状态文件,以保证读取最新状态。
• 若非应用于电源,请将 percentageFull 设置为 -1 。
下例仅供参考。数据结构定义参见设备详情Protobuf定义
以下为电源状态JSON文件示例(powerSupplyStatus.json):
图片描述

以下为蓝牙连接状态JSON文件示例(bluetoothStatus.json):
图片描述

以下为移动网络连接状态JSON文件示例(cellularStatus.json):
图片描述

以下为WiFi连接状态文件示例(wifiStatus.json):
图片描述

设备状态属性JSON要求

设备状态属性文件必须带有.json扩展名,置于指定外部位置。默认位置为 /appdata/devicedetail/deviceproperties。
设备状态文件的JSON要求包括:图片描述
• 状态更新时,写入状态文件。新状态文件应总是覆盖旧状态文件,以保证读取最新状态。
• 属性应始终包含全套属性。Edge Manager服务将旧信息替换为新信息。
• 属性为随机键值对。键(如下例中的”Prop1”)为字符串。值包含了数据值和数据类型的字符串表示。支持数据类型的完整清单参见设备详情Protobuf定义。
• Timestamp字段必须为RFC3399格式,默认为新纪元时间。
下例仅供参考。数据结构定义参见设备详情Protobuf定义
以下是设备状态属性JSON文件示例(deviceStatusProps.json):
图片描述

软件信息JSON要求

软件信息文件必须带有.json扩展名,置于指定外部位置。默认位置为<PREDIX_MACHINE_ROOT>/appdata/devicedetail/softwareinfo
软件信息文件的JSON要求包括:
• 设备首次启动及添加或更新软件时,必须提供该文件。
• 文件必须包含全套已安装软件。边缘网关将旧信息替换为新信息。
• timestamp 字段必须为RFC 3339格式(参见下例)。
• type 字段可以为 UNKNOWN_TYPE (默认), APPLICATION_TYPE, SYSTEM_TYPE, CONFIGURATION_TYPE。
• 只应有一个文件。如果找到多个文件,则使用第一个有效文件。其他文件将被重命名为.extra.。
以下为软件信息JSON文件示例(softwareInfo.json):
图片描述

边缘告警JSON要求

边缘告警文件有特殊的JSON要求。
边缘告警文件必须带有.json扩展名,置于指定外部位置。默认位置为/appdata/devicedetail/edgealerts。
边缘告警文件的JSON要求包括:
• EdgeManager使用 alertType, sourceType和 source 作为键。当多个告警的以上三个字段值相同时,EdgeManager UI内只显示最新的值。
• timestamp 字段必须为RFC3399格式,默认为新纪元时间。
下例仅供参考。数据结构定义参见设备详情Protobuf定义
以下为边缘告警JSON文件示例:
图片描述

相关概念
关于告警
相关任务
查看和过滤告警

设备详情Protobuf定义

支持数据类型.proto文件
以下common_value.proto示例文件描述了设备详情通用的支持数据类型。值包含了数据值和数据类型的字符串表示。
图片描述

设备信息结构
以下edge_device_info.proto示例文件描述了设备信息的数据结构。
图片描述
图片描述

HTTP客户端服务

HTTP客户端服务提供了一组API,用于构建客户端侧的HTTP/1.1兼容应用程序。该服务基于Apache HTTP客户端4.3.5,将Apache HTTP客户端的全套API暴露在OSGi环境内。同时提供了一个自定义帮助程序API,用于简化RESTful客户端的开发。Predix机器HTTP客户端支持服务器端的证书验证。
与OSGi服务类型一样,HTTP客户端目前注册为单例模式服务或工厂。支持以下三种接口:
• IHttpClient – 暴露 PoolingHttpClientManager管理的简单http连接的相关功能。
• IHttpClientFactory – 使用HttpClient的私有实例。
• IPredixCloudHttpClientFactory – 构建支持Predix云认证通信的HTTP客户端。

使用示例

在消费服务类的成员变量中添加一个参考值:
图片描述

• 添加一些依赖项注入函数,以允许OSGi框架注入IHttpClient服务实例
图片描述

• 设置 HttpClientFactory 服务,以创建一个不与默认客户端共享资源的客户端:

图片描述

• 通过 IPredixCloudHttpClientFactory ,利用Predix云身份管理服务中提供的身份在云端调用REST服务。客户端将自动管理身份管理服务中指定的认证服务器提供的OAuth2令牌的获取。该服务接口的Predix云版本与 HttpClientFactory 接口的使用方法相同。
图片描述

必要时,使用帮助程序提供访问权限:
图片描述

要建立连接,使用任一 IHttpClient API函数与服务器连接,向服务器发送和/或接收来自服务器的数据。
图片描述

启用HTTPS

可以在HTTP连接中提供自己的HTTP/HTTPS上下文,而无需与其他应用程序共享敏感的配置信息,如cookie等。默认情况下, org.apache.felix.http.enable 属性设置为 false 以便只启用HTTPS。
注:
更多信息参见Security Administration服务:SSL上下文和证书管理。
1. 找到并打开文件<Predix Machine runtime container location>/security /com.ge.dspmicro.securityadmin.cfg
2. 设置以下属性的值:
图片描述

使用HTTP客户端API

查看HTTP客户端Javadoc API,了解如何实现HTTP客户端服务。
1. 导航至下列文件,将压缩包内的所有文件解压:/docs/apidocs.zip。
2. 导航至Javadoc API,路径:/docs/apidocs/index.html /com.ge.dspmicro.httpclient.api。
3. 要启用HTTP客户端服务的SSL上下文,使用 IHttpClient.sslType 方法设置SSL类型。
图片描述

使用HTTP客户端示例应用程序

为示范如何使用此服务,特提供一个HTTP客户端示例应用程序。
1. 导航至<SDK installation location>/samples/sample-apps.zip,解压文件。
2. 在sample-apps/sample文件夹内,打开sample-httpclient应用程序。
注:
关于构建和运行示例应用的说明参见 在Predix SDK内构建示例和运行示例

配置HTTP客户端服务

可以自定义HTTP客户端服务。为此,设置HTTP客户端配置文件内的属性值。
1. 找到并打开配置文件:
<Predix Machine runtime container location>/configuration/machine /com.ge.dspmicro.httpclient.cfg
2. 设置以下属性的值:
图片描述

HTTP Tunnel

HTTP Tunnel服务便于不同网络协议通过HTTPS进行通信。HTTPS协议充当信道的包装器,隧道协议可借此进行通信。
如果网络只允许HTTP/HTTPS连接穿过防火墙,但需要其他协议进行通信,可利用HTTP Tunnel服务来实现使用其他协议的通信。

使用范例

HTTP Tunnel服务支持以下使用情景:
• 使用HTTP Tunnel建立连接,启动一个远程桌面
可以将远程桌面连接至本地端口,HttpTunnel可以通过隧道,与远程机器连接。
• 使用SSH连接设备。
要连接现场设备,设备必须与服务器进行初始接触。连接建立后,可以创建一个SSH连接,通过HTTP Tunnel与设备相连。
下图展示了此种使用情景: 图1使用SSH连接设备

图片描述

功能

HTTP Tunnel服务使用以下客户端-服务器模型:
• HTTP Tunnel客户端 – 向HTTP Tunnel服务器发起HTTP Tunnel连接请求。
• HTTP Tunnel服务器 – 接收来自HTTP Tunnel客户端的HTTP Tunnel连接请求。同时还发起HTTP Tunnel*数据传输请求*。
总是由HTTP Tunnel客户端发起与HTTP Tunnel服务器的连接。服务器侧对客户端不加区分,只要他们具备访问服务器的权限即可。从HTTP Tunnel客户端到HTTP Tunnel服务器的连接建立后,服务器可以发起数据传输请求。
HTTP Tunnel客户端对初始连接请求使用长轮询。保证连接对队列中的任何服务器数据传输请求开放。一旦服务器发起数据传输请求,客户端根据请求执行相应的动作,关闭连接,向服务器发送新连接,执行新的数据传输请求。
HTTP Tunnel客户端还使用长轮询发送 GET 请求,从服务器获取数据。初始连接建立后,服务器与客户端建立会话,互相传输数据。HTTP Tunnel客户端内的一个会话映射至HTTP Tunnel服务器内的一个会话, 拉取和推送数据。根据接收用户或应用程序初始连接的服务来创建会话。然后,该服务通知配对服务使用同一个ID发起会话。
下图展示了HTTP Tunnel数据流: 图2使用HTTP Tunnel服务的数据流

图片描述

配置HTTP Tunnel客户端

要使用HTTP Tunnel客户端,必须先配置SSL上下文TrustStore。参考配置客户端KeyStore/TrustStore,设置下列属性 com.ge.dspmicro.securityadmin.sslcontext.client.truststore.type, com.ge.dspmicro.securityadmin.sslcontext.client.truststore.path和 com.ge.dspmicro.securityadmin.sslcontext.client.truststore.password 。
可以配置HTTP Tunnel客户端,指定目标主机、允许的最大连接数和每个路由的最大连接数。还可以指定使用的连接协议名称或类型、协议端口和端口的作用。
配置属性在单独的配置文件内定义,一个文件用于目的地和连接信息,另一个文件用于协议和端口信息。
格式化.config文件(不是 .cfg 文件)内的属性时,使用类型字符,后跟值的引用字符串表示。例如,一个布尔型属性=B”true”。小写类型字符表示基本数据。字符串的类型可以省略。下表列出了类型和对应的类型字符:
图片描述

数组格式为属性=<类型>[”<值1>”,”<值2>”]。例如,整型数组属性=I[”1”, “2”, “3”]。为清晰起见,可使用反斜杠分隔。
1. 配置HTTP Tunnel客户端设置:
a. 找到并打开下列文件:
<Predix Machine runtime container location>/configuration/machine /com.ge.dspmicro.httptunnel.client-[n].config file
b. 设置以下属性的值:
图片描述
图片描述

  1. 配置HTTP Tunnel客户端协议设置:
    a. 找到并打开下列文件:
    图片描述
    b. 设置以下属性的值:
    图片描述
    图片描述

配置HTTP Tunnel服务器

可以配置HTTP Tunnel服务器,指定监听HTTP Tunnel客户端的服务器端口。
1. 将图片描述
2. 2. 打开tunnelServer文件(Windows系统为tunnelServer.bat文件),位置:/samples/sample-cloud-apps/sample/httptunnel-server。
3. 设置下列参数值:
图片描述
4. 找到并打开下列文件:
图片描述

  1. 设置以下属性的值:
    图片描述
    图片描述

  2. 找到并打开下列文件:
    图片描述

  3. 设置以下属性的值:
    图片描述

为HTTP Tunnel配置Predix云身份管理服务

可以通过设置.config文件或在技术人员控制台内使用Predix云注册(会自动设置属性),为 HTTP tunnel配置Predix云身份管理服务。
格式化.config文件(不是 .cfg 文件)内的属性时,使用类型字符,后跟值的引用字符串表示。例如,一个布尔型属性=B”true”。小写类型字符表示基本数据。字符串的类型可以省略。下表列出了类型和对应的类型字符:
图片描述
数组格式为属性=<类型>[”<值1>”,”<值2>”]。例如,整型数组属性=I[”1”, “2”, “3”]。为清晰起见,可使用反斜杠分隔。
1. 找打并打开下列文件:
图片描述

  1. 设置以下属性的值:
    图片描述
    图片描述

HTTP Proxy设置概述

可以使用Proxy配置服务指定HTTP proxy设置,为某个位置启用Predix机器的设备存储和提供proxy设置,还可以指定不需要proxy的目的地。
Apache Proxy配置服务
Apache Proxy配置服务为某个位置启用Predix机器的设备存储和提供proxy设置。
这样,服务就无需在自己的配置文件内实现proxy设置。
由于服务通过不同方式使用proxy信息,proxy主机名、proxy端口和proxy用户名及密码的值用原始形式存储在 org.apache.http.osgi.services.ProxyConfiguration 接口内。
• String getHostname()
• int getPort()
• String getUsername()
• String getPassword()
• boolean isEnabled()
• String[] get ProxyExceptions();
使用范例
以下使用情景示范了如何使用Apache Proxy配置服务。
1. Predix机器的HTTP客户端需要与外部服务器建立代理连接。与在自己的配置文件内实现proxy设置不同,该服务消费在Predix机器运行时容器内运行的Proxy配置服务,并提供设置。
2. Predix机器的网络套接字客户端需要与外部服务器建立代理连接。与在自己的配置文件内实现proxy设置不同,该服务消费在Predix机器运行时容器内运行的Proxy配置服务,并提供设置。然后容器将设置应用到自己的 org.eclipse.jetty.websocket.client 碎片上。
依赖项
消费该服务,需要Maven依赖项和OSGi导入:

o 消费Proxy配置服务需要以下Maven依赖项:
图片描述

• 消费捆绑束组件(bundle)需要下列OSGi导入:
图片描述

配置Apache Proxy配置设置

配置Apache Proxy配置服务时,最少须提供proxy主机信息。
格式化.config文件(不是 .cfg 文件)内的属性时,使用类型字符,后跟值的引用字符串表示。例如,一个布尔型属性=B”true”。小写类型字符表示基本数据。字符串的类型可以省略。下表列出了类型和对应的类型字符:
图片描述

数组格式为属性=<类型>[”<值1>”,”<值2>”]。例如,整型数组属性=I[”1”, “2”, “3”]。为清晰起见,可使用反斜杠分隔。
1. 导航至
图片描述
图片描述
图片描述

获取Apache Proxy配置服务

要获取Apache Proxy配置服务,可使用声明式服务注入。
下例展示了如何使用声明式服务注入该服务:
图片描述

Little Proxy

Predix机器运行时容器内运行的应用程序可以与Predix云通信,因为Predix机器为发往云端的请求添加了认证。在Predix机器内运行Little Proxy服务, 使Predix机器容器外运行的可信应用程序可以通过代理请求与云端通信。
Little Proxy服务方便了使用以下工作流的代理请求:
1. 在Predix机器上或在设备容器外运行的可信应用程序向Predix机器和Little Proxy服务发送HTTPS请求。
2. Little Proxy服务向Predix云请求接入令牌。
3. Little Proxy服务将令牌添加到proxy请求内,并将其转发至云端或任何上游proxy。
下图展示了此工作流:

图片描述

配置Little Proxy服务
在代理或调试容器类型内,可以配置Little Proxy服务,指定端口、连接超时时间和范围。
1. 导航至/configuration/machine
2. 打开com.ge.dspmicro.littleproxy.config文件。
3. 设置以下属性的值:
图片描述

图片描述

网络套接字客户端服务

网络套接字客户端服务是云网关的一个组件。通过这个服务,应用程序可以与网络套接字服务器端点建立网络套接字连接。Predix机器实现通过Java网络套接字API (JSR-356)暴露网络套接字客户端。这样可以使Predix机器上运行的应用程序与网络套接字提供者无关。

使用范例

网络套接字客户端服务支持下列使用情景:
• 服务尝试连接 WebSocket 端点,以发送和接收数据。组件首先获取一个客户端容器实例,后者通过依赖项注入实现 WebSocketContainer 接口。然后服务调用 connectToServer() 方法,将 ClientEndpoint-annotated WebSocket 类传递给该方法。
• 服务尝试连接 WebSocket 端点以传输/接收数据。组件首先获取一个客户端容器实例,后者通过依赖项注入实现 WebSocketContainer 接口。然后调用 connectToServer() 方法,将 ClientEndpoint-annotated WebSocket对象实例传递给方法。通过该方法,消费者可以用配置的状态注册网络套接字 ClientEndpoint ,而不是通过未实例化的类进行注册。

SSL上下文

网络套接字客户端使用安全管理配置文件内设置的全局SSLContext,通过TLS启用网络套接字,该配置文件位于图片描述。配置完成后,客户端自动在连接WSS URI时建立TLS连接。

依赖项

消费此服务需要Maven依赖项和OSGI导入包。
• 需要以下Maven依赖项:
图片描述

• 消费捆绑束组件(bundle)需要以下OSGi导入:
图片描述

获取网络套接字客户端服务

使用声明式服务注入 WebSocketContainer 服务。
下例展示了如何注入 WebSocketContainer 服务:
图片描述

使用网络套接字客户端服务

Java网络套接字的Java Community Process为消费者提供了一种方便的、与提供者无关的方法来编写网络套接字代码。利用该API,可以将类作为客户端/服务器端点来添加注释,并可以使用以下通用的网络套接字回调约定为各个方法添加注释: onOpen/onMessage/onClose。
使用下表作为类或方法的注释参考。

图片描述

下例展示了一个依照JSR-356标准注释的客户端。示例含有最少限度的 OnOpen 和 OnMessage 回调。要使用网络套接字客户端服务,消费者必须实现一个注释类。
图片描述

使用网络套接字客户端示例应用程序

为了示范如何使用该服务,特提供一个网络套接字示例应用程序。
1. 导航至图片描述,解压文件。
2. 在sample-apps/sample文件夹内,打开sample-websocketclient应用程序。
注:
关于构建和运行示例应用的说明参见 在Predix SDK内构建示例和运行示例。
配置网页服务安全性
1. 导航至图片描述
2. 打开安全管理配置文件com.ge.dspmicro.securityadmin.cfg。
3. 配置以下属性:
图片描述

评论