实现智能终端对车机的长轮询控制系统及方法与流程

文档序号:11843327
实现智能终端对车机的长轮询控制系统及方法与流程

本发明涉及互联网、车联网、服务平台及移动终端开发,特别涉及移动互联网环境下,向车机端进行及时、可靠的命令下发方法。



背景技术:

现有技术中互联网、移动互联网的网络环境如下:

互联网的网络基础建设,经过十几年长期的发展,已经较为稳定和成熟,PC终端、操作系统的能力也达到了较高的水平。

而移动互联网,由于涉及到无线电话网络基站、2G、3G和4G技术的不断发展,其稳定性、带宽、资源分配等各方面虽日趋完善,但当前终究还有不少问题的存在。另外,由于移动互联网其“移动”的本质,加上智能终端设备(智能手机、平板电脑)的发展较晚,目前还在不断演变的情况,与互联网相比,移动互联网还是低速、不稳定、终端能力稍弱的情况。而且由于其“移动”本质,短时间内很难达到互联网的质量。

所以,在互联网的环境里面,网络应用程序由于网络设施、操作系统的成熟,开发使用起来比较容易,资源也较为充足。而移动互联网还是要“斤斤计较”。

智能终端电池续航能力、系统休眠:

智能终端设备的电池续航能力始终是技术瓶颈。在连续使用的情况下,绝大部分智能设备电池无法支持两个小时以上。所以在没有外部电源的情况,智能终端设备必须频繁、长时间休眠,这将极大地影响两种网络环境下的网络应用场景。

IP地址、端口资源:

由于需要动态分配IP地址(这里不仅仅指互联网入口的IP,还包括局域网内部的IP),路由器的工作原理都是经过端口映射,把内部网络(包括PC、手机、平板、Wifi、2G、3G、4G)IP与端口映射成外部IP(通常是公网IP)和对应的端口,并维持这个映射关系,才能正常地修改、转发报文信息,保证内部各个ip、端口与外部的各个ip、端口的通信。

然而,单个IP地址的端口资源是有限的,理论上限是65535个端口。对于普通宽带路由器来说,这个已经很充足了。但是,对于大型的网络服务、网络主干接入点等来说,如果IP资源不足,每个IP几万个端口的资源很快会耗尽,从而影响正常通讯。

正因为如此,所有的路由器都会为每个端口映射关系设置老化时间,如果老化时间倒数到0,则端口映射关系失效,该端口被释放给其他连接使用。如果端口全部耗尽,则无法再新建内部与外部的网络连接。

端口映射老化时间,比很多人想象中的要短很多。一般的家用宽带路由器,老化时间一般是两三分钟;在有线宽带运营商接入部分,老化时间可能少于两分钟。在无线电话网络运营商接入部分(例如GPRS连接),老化时间甚至不超过一分钟。

也就是说,任何一个网络通讯(不管是TCP或UDP),如果几分钟之内没有网络报文传输,其占用的IP地址端口将被路由器回收。这个时候不管TCP还是UDP该次通信必将终止。更残酷的事实是,互联网可认为是由无数个路由器连接而成的,一个网络通信往往需要通过n个路由器,每个路由器都会为一次通信建立自己的端口映射。只要其中一个路由器回收其端口,则整个通讯中断。



技术实现要素:

本发明所要解决的技术问题,就是提供一种实现智能终端对车机的长轮询控制系统及方法以实现车机端通讯服务器对车机段进行及时可靠的命令下发。

本发明解决所述技术问题,采用的技术方案是,实现智能终端对车机的长轮询控制系统,包括智能终端、智能终端服务器、车机端通讯服务器及车机,所述智能终端与智能终端服务器连接,智能终端服务器与车机端通讯服务器连接,车机端通讯服务器与车机连接;

所述智能终端用于下发远程控制命令至智能终端服务器;

所述智能终端服务器用于将远程控制命令转发至车机端通讯服务器;

所述车机端通讯服务器用于与车机建立长连接,并为每个车机维护一个命令列队;接收命令时将新的远程控制命令加入到命令列队,下发命令时将远程控制命令出队;同时,车机端通讯服务器时刻查询命令列队是否为空,是则维持与车机之间的长连接,否则下发命令。

具体的,所述车机,还用于通过在发送HTTP请求中,设置头部keep-Alive:timeout=A;

所述车机端通讯服务器,还用于设置长连接超时时间B,且A<B,所述时间A及时间B由人为设定。

进一步的,所述车机还用于发送HTTP请求时检测长连接是否超时,是则建立与车机端通讯服务器的新的长连接,否则通过已有长连接建立与车机端通讯服务器之间的通讯。

进一步的,所述车机端通讯服务器,还用于在车机端通讯服务器与车机建立长链接后,返回连接信息至车机;

所述车机还用于接收返回连接信息后再次发送HTTP请求,车机端通讯服务器检测命令列队是否为空,否则命令出队下发至车机,是则等待时间A返回心跳包至车机,维持HTTP连接不被释放。

用于上述的基于HTTP协议实现手机端对车机端的长轮询控制系统的控制方法,包括以下步骤:

智能终端下发远程控制命令至智能终端服务器,智能终端服务器将远程控制命令转发至车机端通讯服务器,车机端通讯服务器与车机建立长连接,并为每个车机维护一个命令列队;接收命令时将新的远程控制命令加入到命令列队,下发命令时将远程控制命令出队;同时,车机端通讯服务器时刻查询命令列队是否为空,是则维持与车机之间的长连接,否则下发命令。

具体的,车机端通讯服务器与车机建立长连接包括以下步骤:

车机在发送HTTP请求中,设置头部keep-Alive:timeout=A;

车机端通讯服务器设置连接超时时间B,且A<B,所述时间A及时间B由人为设定。

进一步的,所述车机发送HTTP请求,若长连接已超时则系统建立车机与车机端通讯服务器的新的长连接建立通讯,否则通过已有长连接建立通讯,车机端通讯服务器返回连接信息至车机。

进一步的,所述车机接收返回连接信息后再次发送HTTP请求,车机端通讯服务器检测命令列队是否为空,否则命令出队下发至车机,是则等待时间A返回心跳包至车机,维持HTTP连接不被释放。

本发明的有益效果是:车机端通讯服务器设置对http请求保持长连接的时间,当在时间阈值之内时,连接不会释放,车机有新的请求时,使用这条已建立的连接,不会创建新的连接;如果超过时间阈值,连接会被释放,再发送新的请求时,会重新建立连接;同时车机每次收到车机端通讯服务器的命令返回后,都会再次发送此请求,车机端通讯服务器收到请求时,每隔时间段A对车机端超时返回,通过此轮询机制,车机端、服务器发送心跳包维持http连接不被释放,从而实现服务器对客户端进行及时、可靠的命令下发。

附图说明

图1为本发明实现智能终端对车机的长轮询控制系统及方法实施例中系统机构图;

图2为本发明实现智能终端对车机的长轮询控制系统及方法实施例中车机发送请求流程图;

图3为本发明实现智能终端对车机的长轮询控制系统及方法实施例中检测长连接是否有效流程图。

以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。

具体实施方式

下面结合附图及实施例详细描述本发明的技术方案:

本发明针对现有技术中端口映射的老化时间导致端口被回收从而导致连接被释放的问题,提供一种实现智能终端对车机的长轮询控制系统,包括智能终端、智能终端服务器、车机端通讯服务器及车机,所述智能终端与智能终端服务器连接,智能终端服务器与车机端通讯服务器连接,车机端通讯服务器与车机连接;所述智能终端用于下发远程控制命令至智能终端服务器;所述智能终端服务器用于将远程控制命令转发至车机端通讯服务器;所述车机端通讯服务器用于与车机建立长连接,并为每个车机维护一个命令列队;接收命令时将新的远程控制命令加入到命令列队,下发命令时将远程控制命令出队;同时,车机端通讯服务器时刻查询命令列队是否为空,是则维持与车机之间的长连接,否则下发命令。用于上述基于HTTP协议实现手机端对车机端的长轮询控制系统的控制方法,智能终端下发远程控制命令至智能终端服务器,智能终端服务器将远程控制命令转发至车机端通讯服务器,车机端通讯服务器与车机建立长连接,并为每个车机维护一个命令列队;接收命令时将新的远程控制命令加入到命令列队,下发命令时将远程控制命令出队;同时,车机端通讯服务器时刻查询命令列队是否为空,是则维持与车机之间的长连接,否则下发命令。车机端通讯服务器设置对http请求保持长连接的时间,当在时间阈值之内时,连接不会释放,车机有新的请求时,使用这条已建立的连接,不会创建新的连接;如果超过时间阈值,连接会被释放,再发送新的请求时,会重新建立连接;同时车机每次收到车机端通讯服务器的命令返回后,都会再次发送此请求,车机端通讯服务器收到请求时,每隔时间段A对车机端超时返回,通过此轮询机制,车机端、服务器发送心跳包维持http连接不被释放,从而实现服务器对客户端进行及时、可靠的命令下发。

实施例

HTTP是一个请求<->响应模式的典型范例,即客户端向服务器发送一个请求信息,服务器来响应这个信息。在老的HTTP版本中,每个请求都将被创建一个新的客户端->服务器的连接,在这个连接上发送请求,然后接收请求。这样的模式有一个很大的优点就是,它很简单,很容易理解和编程实现;它也有一个很大的缺点就是,它效率很低,因此Keep-Alive被提出用来解决效率低的问题。而Keep-Alive(保持连接)功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。

本例就是针对http保持连接这种机制,实现服务器对客户端进行及时、可靠的命令下发。

系统结构如图1所示,包括智能终端、智能终端服务器、车机端通讯服务器及车机,所述智能终端与智能终端服务器连接,智能终端服务器与车机端通讯服务器连接,车机端通讯服务器与车机连接;所述智能终端用于下发远程控制命令至智能终端服务器;所述智能终端服务器用于将远程控制命令转发至车机端通讯服务器;所述车机端通讯服务器用于与车机建立长连接,并为每个车机维护一个命令列队;接收命令时将新的远程控制命令加入到命令列队,下发命令时将远程控制命令出队;同时,车机端通讯服务器时刻查询命令列队是否为空,是则维持与车机之间的长连接,否则下发命令。

车机端与通信服务器的http长连接实现方式如下:

1.车机端在发送的Http请求中,设置头部Keep-Alive:timeout=A;(服务器将等待时间段A才进行返回);

2.车机端通讯服务器设置连接超时时间B,且A<B,所述时间A及时间B由人为设定。IIS、Apache等服务器设置对http请求保持连接的时间B,当在时间阈值B之内时,连接不会释放,车机端有新的请求时,使用这条已建立的连接,不会创建新的连接。如果超过时间阈值B,连接会被释放,再发送新的请求时,会重新建立连接。

系统工作时,车机端在移动网络环境下发送维持连接的http请求,当IP地址变化、网络环境等原因断开连接就会重新发送此请求,如图2所示;若长连接已超时则系统建立车机与车机端通讯服务器的新的长连接,否则通过已有长连接建立通讯。

而车机每次收到车机端通讯服务器返回的连接信息后,都会再次发送此请求,车机端通讯服务器收到请求时,每隔时间段A对客户端超时返回。通过此轮询机制,车机端、服务器发送心跳包维持http连接不被释放。而当服务端有命令下发时,通过此请求返回,而不是返回心跳包。具体如图3所示。其中,HTTP有效返回包括有命令的返回和无命令的返回,有命令的返回时间<A;无命令的返回时间=A。但是,不论返回是否包含命令,返回都在TCP链接维持时间内进行,即A<B。返回如果是有效返回,不论该返回是否包含有命令,都是说明,车机端通讯服务器方面维护有当前通信的TCP通道,需要马上通过该通道再次发起命令下发请求;而返回值如果是超时返回,说明该通道已经失效,再次请求的时候将会建立新的TCP通道。由于一次HTTP请求能够携带的命令数只有一条,所有命令下发服务器端使用队列缓存了所有的没下发命令,在下一次HTTP请求到来时,根据阈值判断是否有有效命令数据需要下发。

考虑移动网络环境下的延迟,B-A的值需在合适范围内,保证在连接释放之前,一直都有心跳包发送。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1