本发明涉及榨汁机领域,尤其涉及一种用于榨汁机系统的后台通信方法以及后台通信系统。
背景技术:
榨汁机是一种水果榨汁设备,以水果为原料,提供现场榨汁服务,一般部署在机场,火车站等人流量很大场所。
榨汁机在工作过程中需要备料、故障处理、广告推送、系统更新、清洗,这此处理流程都基于服务器进行管理,此管理以榨汁机与服务器通信为基础。本系统就是为了解决服务器与榨汁机通信。一般的通信存在以下不足:服务器榨汁机管理平台架构为IIS通过HTTP协议为榨汁机客户端提供服务,而HTTP协议是一种无状态连接,在连接断开后服务器无法主动连接到客户端。
所以现有技术存在缺陷,需要改进。
技术实现要素:
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种用于榨汁机系统的后台通信方法以及后台通信系统。
本发明解决其技术问题所采用的技术方案是:构造一种用于榨汁机系统的后台通信方法,包括:
S1、检测客户端是否支持HTML5;
S2、如果客户端支持HTML5,在服务器端创建WebSocket对象,与客户端建立通信会话,并通过该通信会话发送命令给客户端;客户端收到服务器端的命令后,通过请求WCF服务执行业务操作;
S3、如果客户端不支持HTML5,客户端创建iframe,基于心跳包与服务器端建立通信并执行业务操作。
在本发明所述的用于榨汁机系统的后台通信方法中,所述步骤S2包括:
S21、服务器端通过WebSockets类创建通信服务器;
S22、客户端通过HubConnection()函数建立对通信服务器的连接并通过Invoke()函数加入通信服务器的通信会话;
S23、通信服务器通过步骤S22中的通信会话主动向客户端发送命令;
S24、服务器端的WCF组件/WCF服务器将一项功能打包成一个HTTP请求,客户端收到服务器的命令后,发送请求给WCF组件/WCF服务器,WCF组件/WCF服务器返回业务数据或者执行一项功能。
在本发明所述的用于榨汁机系统的后台通信方法中,所述步骤S3包括:
S31、客户端创建http请求函数,并在http请求函数中创建HttpWebRequest对象执行HTTP请求:
S32、客户端创建Timer类,以一定的时间间隔向服务器端发出HTTP请求,通过返回值确定发出请求的客户端是否有需要执行的命令。
在本发明所述的用于榨汁机系统的后台通信方法中,所述步骤S1中所述的检测客户端是否支持HTML5包括:客户端组件创建webbrowser控件,采用Javascript中的checkhHtml5()函数判断客户端是否支持HTML5。
在本发明所述的用于榨汁机系统的后台通信方法中,所述步骤S2中所述的服务器端的命令由两个字段组成:第一个字段为业务内容,第二字段为对第 一个字段的操作方式。
本发明还公开了一种用于榨汁机系统的后台通信系统,包括客户端和服务器端,所述客户端包括:
HTML5检测模块,用于检测客户端是否支持HTML5,如果支持HTML5,则触发第一通信模块工作,如果不支持HTML5,则触发第二通信模块工作;
第一通信模块,用于与端创建WebSocket对象的服务器端建立通信会话,服务器端通过该通信会话发送命令给第一通信模块;第一通信模块收到服务器端的命令后,通过请求WCF服务执行业务操作;
第二通信模块;用于创建iframe,基于心跳包与服务器端建立通信并执行业务操作。
在本发明所述的用于榨汁机系统的后台通信系统中,所述服务器端包括通过WebSockets类创建的通信服务器和WCF组件/WCF服务器,WCF组件/WCF服务器用于将一项功能打包成一个HTTP请求;所述第一通信模块包括:
通信单元,用于通过HubConnection()函数建立对通信服务器的连接并通过Invoke()函数加入通信服务器的通信会话;通信服务器通过该通信会话主动向通信单元发送命令;
业务单元,在通信单元收到通信服务器的命令后,发送请求给WCF组件/WCF服务器,WCF组件/WCF服务器返回业务数据或者执行一项功能。
在本发明所述的用于榨汁机系统的后台通信系统中,所述第二通信模块包括:
请求单元:用于创建http请求函数,并在http请求函数中创建HttpWebRequest对象执行HTTP请求:
定时单元:用于创建Timer类,以一定的时间间隔向服务器端发出HTTP 请求,通过返回值确定发出请求的客户端是否有需要执行的命令。
在本发明所述的用于榨汁机系统的后台通信系统中,所述的检测客户端是否支持HTML5包括:HTML5检测模块组件创建webbrowser控件,采用Javascript中的checkhHtml5()函数判断客户端是否支持HTML5。
在本发明所述的用于榨汁机系统的后台通信系统中,所述的服务器端的命令由两个字段组成:第一个字段为业务内容,第二字段为对第一个字段的操作方式。
实施本发明的用于榨汁机系统的后台通信方法以及后台通信系统,具有以下有益效果:本发明通过检测客户端是否支持HTML5可以两种方式实现通信,一种是在客户端不支持HTML5的情况下通过心跳包的方式使连接状态不断开,实现持久的通信会话,另一种是在客户端支持HTML5的情况下使用WebSocket,实现与服务器端全双工通信,且结合WCF技术,使得业务操作不再给通信连接本身产生压力。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明用于榨汁机系统的后台通信方法的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
本发明适用于Windows、linux平台,本发明的用于榨汁机系统的后台通信方法包括:
S1、检测客户端是否支持HTML5,如果支持HTML5,则执行步骤S2,如果不支持HTML5,则执行步骤S3;
S2、在服务器端创建WebSocket对象,与客户端建立通信会话,并通过该通信会话发送命令给客户端;客户端收到服务器端的命令后,通过请求WCF服务执行业务操作;
S3、客户端创建iframe,基于心跳包与服务器端建立通信并执行业务操作。
优选的,所述步骤S2中所述的服务器端的命令由两个字段组成:第一个字段为业务内容,第二字段为对第一个字段的操作方式。因为当客户端数量很多,达到100W能上,服务器端与客户端的通信质量就有明显的下降,这个时候,服务器端与客户端的通信内容就是越少越有利于通信的速度、质量,在本方案中通过定义通信的命令格式形成一个标准,达到上面的要求,通信的命令以简短的“主+动”结构组成,例如"Ad Play",则表示要求客户端进行广告播放操作。
其中,所述步骤S1中所述的检测客户端是否支持HTML5包括:客户端组件创建webbrowser控件(因为客户端的窗体各异,利用该控件可以实现在窗体中导航网页),采用Javascript中的checkhHtml5()函数判断客户端是否支持HTML5,例如具体实施例中JS代码为:
其中,所述步骤S2包括:
S21、服务器端通过WebSockets类创建通信服务器;
例如,引用System.net.WebSockets,创建一个通信服务器:
WebSocket wsServer=new WebSocket(“127.0.0.1”,805);
S22、客户端通过HubConnection()函数建立对通信服务器的连接:
hubConnection=new HubConnection("http://127.0.0.1:805/signalr/hubs");
再通过Invoke()函数加入通信服务器的通信会话:
hubProxy.Invoke("joinGroup","Client01");
S23、通信服务器通过步骤S22中的通信会话主动向客户端发送命令;
例如,wsServer.Send("SendID","Client01","Ad Play");则客户端可得到:"Ad Play"信息。
S24、服务器端的WCF组件/WCF服务器将一项功能打包成一个HTTP请求,客户端收到服务器的命令后,发送请求给WCF组件/WCF服务器,WCF组件/WCF服务器返回业务数据或者执行一项功能。
WCF服务是编程的一种技术:WCF组件/WCF服务器将一项功能打包成一个HTTP请求,当收到客户端的请求时返回数据或执行一项功能。这样WCF服务 只对WCF组件/WCF服务器本身产生压力,不对通信组件/通信服务器产生压力。
例如,服务器创建特定事务WCF服务:
服务器实现AdPlay接口,通过ClientID返回客户端的广告播放的具体信息给客户端。客户端取得具体信息后执行广告播放业务。
其中,所述步骤S3包括:
S31、客户端创建http请求函数,并在http请求函数中创建HttpWebRequest对象执行HTTP请求:
S32、客户端创建Timer类,以一定的时间间隔向服务器端发出HTTP请求,通过返回值确定发出请求的客户端是否有需要执行的命令。
相应的,在上述方法的基础上,本发明还公开了一种用于榨汁机系统的后台通信系统,包括客户端和服务器端,所述客户端包括:
HTML5检测模块,用于检测客户端是否支持HTML5,如果支持HTML5,则触发第一通信模块工作,如果不支持HTML5,则触发第二通信模块工作;
所述的检测客户端是否支持HTML5包括:HTML5检测模块组件创建webbrowser控件,采用Javascript中的checkhHtml5()函数判断客户端是否支持HTML5。
第一通信模块,用于与端创建WebSocket对象的服务器端建立通信会话,服务器端通过该通信会话发送命令给第一通信模块;第一通信模块收到服务器 端的命令后,通过请求WCF服务执行业务操作;
第二通信模块;用于创建iframe,基于心跳包与服务器端建立通信并执行业务操作。
优选的,所述的服务器端的命令由两个字段组成:第一个字段为业务内容,第二字段为对第一个字段的操作方式。
其中,所述服务器端包括通过WebSockets类创建的通信服务器和WCF组件/WCF服务器,WCF组件/WCF服务器用于将一项功能打包成一个HTTP请求;
其中,所述第一通信模块包括:
通信单元,用于通过HubConnection()函数建立对通信服务器的连接并通过Invoke()函数加入通信服务器的通信会话;通信服务器通过该通信会话主动向通信单元发送命令;
业务单元,在通信单元收到通信服务器的命令后,发送请求给WCF组件/WCF服务器,WCF组件/WCF服务器返回业务数据或者执行一项功能。
其中,所述第二通信模块包括:
请求单元:用于创建http请求函数,并在http请求函数中创建HttpWebRequest对象执行HTTP请求:
定时单元:用于创建Timer类,以一定的时间间隔向服务器端发出HTTP请求,通过返回值确定发出请求的客户端是否有需要执行的命令。
综上所述,实施本发明的用于榨汁机系统的后台通信方法以及后台通信系统,具有以下有益效果:本发明通过检测客户端是否支持HTML5可以两种方式实现通信,一种是在客户端不支持HTML5的情况下通过心跳包的方式使连接状态不断开,实现持久的通信会话,另一种是在客户端支持HTML5的情况下使用WebSocket,实现与服务器端全双工通信,且结合WCF技术,使得业务操作不 再给通信连接本身产生压力。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。