购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

6.1 云服务器侦听程序CS-Monitor涉及的技术基础

云服务器侦听程序CS-Monitor所涉及的主要技术基础有云服务器及侦听程序的概念、WebSocket协议、JSON格式等。

6.1.1 云服务器侦听程序CS-Monitor的概念

定义6.1 云服务器: 在UE-MPO-HCI的NB-IoT应用架构体系中,具有固定IP地址的计算机是信息邮局(MPO)的一个抽象称为云服务器(Cloud Sever,CS)。

定义 6.2 云服务器侦听程序: 运行在云服务器上的、负责数据接收、存储和处理的程序称为云服务器侦听程序(CS-Monitor)。

这里的云服务器一般是指通过购买云服务器提供商的计算服务而获得的远程虚拟计算机系统,也可以是物理上放置在本单位的具有固定地址的计算机系统。对于 NB-IoT 应用开发来说,实质就是具有固定IP地址的计算机系统,为行文方便,下面一律称为云服务器。

可以形象地理解,云服务器“竖起耳朵”侦听着UE发来的数据,一旦“听”到数据,就把它接收下来,因此称为CS-Monitor。 CS-Monitor还要为人机交互系统(HCI)中的各种客户端程序(包括PC客户端、Web网页、微信小程序及手机APP软件等)提供数据访问接口,并能够反馈数据到终端(UE),达到远程控制(UE)之目的。CS-Monitor与HCI中客户端程序之间的通信接口采用WebSocket方式。

6.1.2 WebSocket协议概述

WebSocket协议的全称为WebSocket Protocol,简称为WebSocket或WS,它是一种基于 TCP 协议全双工通信的网络协议。该协议于 2011 年被国际互联网工程任务组(The Internet Engineering Task Force,IETF)定为标准RFC6455。

本工程中将WebSocket库文件封装成类,供CS-Monitor和人机交互系统(HCI)中的各种客户端程序连接使用。具体的使用方法将在以下相关章节中说明。

为了对WebSocket协议有个基本认识,下面简要阐述WebSocket协议的基本内涵与出现的历史背景。

1.WebSocket协议的基本内涵

WebSocket 协议实现了服务器和客户端之间的全双工通信,既允许服务器主动发送消息给客户端,客户端也可以主动发消息给服务器。在实现WebSocket连接过程中,客户端先向服务器发出建立WebSocket连接的请求,然后服务器发出回应,这个过程通常称为握手。这时WebSocket连接就建立了,客户端和服务器之间形成了一条快速通道,两者之间可以直接互传数据。

WSS(WebSocket Secure) 协议是基于SSL 证书的、更加安全的WS协议。在 默认情况下,WS协议使用80端口,WSS协议使用443端口。

2.WebSocket出现的历史背景

在WebSocket协议出现之前,双工通信是通过客户端不停发送HTTP请求,从服务器获取新的数据来实现的,效率低,WebSocket解决了这个问题。使用HTTP协议的Web服务器不能主动向客户端推送消息,主要因为HTTP是无状态的,只能是客户端向服务器发出请求,服务器应答请求。为了解决服务器不能主动向客户端发起通信的问题,人们设计了客户端使用轮询方式每隔一段时间询问服务器或者使用基于长连接的长轮询获取是否有数据更新的一些方法,但效果不甚理想。例如,当服务器有连续变化的实时数据时,客户端就无法很好地及时获取。寻找一个好的方法,既能够让客户端及时获取服务器端的数据,又不会浪费资源,一直是技术人员努力的目标。

6.1.3 JSON格式

JSON 格式由 Douglas Crockford 于 2001 年开始推广使用,后来逐步流行。JSON (JavaScript Object Notation)格式使用字符串方式,按照“键”与“值”的对应方式存储,主要用于网络数据交换。在数据通信时,相比于XML格式,使用JSON格式具有便于编码、易于解析等特点。采用JSON格式更加适合CS-Monitor与HCI客户端。

为直观了解JSON格式,这里简要给出其语法说明。在JSON格式中,大括号表示一个对象,内含使用英文逗号分隔的键值对。每个键值对由用英文冒号分隔的键和值组成,冒号左边为键,右边为对应的值。值可以是字符串、数字,也可以是另一个数组或对象。若有数组,则使用中括号。键使用英文双引号括起来,若值是字符串,则也用英文双引号括起来。下面给出具体JSON格式的对象举例。

var sensor={″name″:″温度″,″bitlen″:″16″,″AD″:12685,″y″:25.36}

这是一个名为sensor 的JSON对象,具有4个键值对,name的值为温度,bitlen的值为16,AD的值为12685,y的值25.36,可以通过键(Key)来访问对应的值,如name的值可以使用sensor.name获取,即温度。 uycRPPJAPzxRNF7l0Hrq+P78tDaouwqAoZ2sfe7pa3HF20I8m/n+ZdkePjj5xIlJ

点击中间区域
呼出菜单
上一章
目录
下一章
×