移动网关服务

网络套接字(WebSocket)服务器概述
网络套接字服务器是移动网关的一个组件。它启用应用程序,以托管WebSocket服务器端点(endpoin)。这些端点可以使用Java网络套接字API(JSR-356)实现。这样可以使Predix Machine上运行的应用程序与网络套接字提供者无关。
对于托管WebSocket服务器端点的应用程序,它获取ServerContainer接口的引用并向其传递一个回调句柄类,通过@ServerEndpoint进行注释。其他网络套接字客户端现在可连接至该端点。
依赖项
消费网络套接字服务器需要Maven依赖项和OSGi导入包。
• pom.xml文件中需要以下Maven依赖项。图片描述

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

设置SSL上下文
网络套接字客户端使用安全管理配置中设置的全局 SSLContext 通过安全传输层协议(TLS)启用网络套接字。一旦配置,服务器可以使用属性中配置的网络套接字安全端口侦听并成功建立TLS连接。服务器也可以请求/要求客户端证书,以启用双向TLS。
网络套接字服务器注释
Java网络套接字的Java Community Process为消费者提供了一种方便的、与提供者无关的方法来编写网络套接字代码。利用该API,开发者可以将类作为客户端或服务器端点来添加注释,并可以使用以下通用的网络套接字回调约定为各个方法添加注释:onOpen/onMessage/onClose进行注释。
用于ServerContainer接口的Java网络套接字API位于:http://docs.oracle.com/javaee/7/api/javax/websocket/server/ServerContainer.html
可在/samples/sample-apps/sample/sample-websocketserver找到示例应用程序(解压sample-apps.zip文件之后)。
下表描述了可能在服务器(或客户端)端点中使用的注释类型。图片描述

注释端点示例
下例展示了一个依照JSR-356标准注释的服务器。示例含有最少限度的 OnOpen 和 OnMessage 回调。如果要定义 WebSocket endpoint,消费者开发者必须执行一个注释的类。 图片描述
图片描述
限制
一旦添加,ServerContainer API和Jetty API均不允许移除端点。移除网络套接字端点的唯一方法是重启网络套接字服务器组件。
获取网络套接字服务器
有多种在OSGi中获取服务的方法。您可以在声明式服务中使用依赖项注入。如果要直接从OSGi服务注册表中获取服务,使用相同的 ServerContainer 接口。您获取 ServerContainer之后,可以通过具有端点注释的类调用 addEndpoint ,以添加一个新的网络套接字服务器URL。
使用声明式服务注入服务。
如何注入网络套接字服务器容器的示例。图片描述

使用网络套接字服务器示例应用程序
为了示范如何使用网络套接字服务器,特提供一个示例应用程序。
1. 导航至/sample/sample-apps.zip并提取文件/sample-apps。
2. 打开sample-websocketserver应用程序。
注:
关于构建和运行示例应用程序的说明参见在Predix SDK内构建示例和运行示例。
配置网络套接字服务器
可以使用配置文件中的属性为网络套接字连接设置全局默认设定值。打开新的连接时将默认使用这些设定值;不过,可以使用API单独配置每个个别连接。
格式化.config文件(不是.cfg文件)内的属性值时,使用类型字符,后跟引用的值字符串表示。例如,一个布尔型属性=B”true”。小写类型字符表示基本数据。字符串的类型可以省略。下表列出了类型和对应的类型字符:图片描述图片描述

数组格式为属性=<类型>[”<值1>”,”<值2>”]。例如,整型数组属性=I[“1”, “2”, “3”].清晰起见,可使用反斜杠分隔。
1. 找到并打开以下文件:/configuration/machine /com.ge.dspmicro.wsserver.config。
2. 设置以下属性的值:图片描述图片描述图片描述图片描述