本发明涉及电子通信领域,尤其涉及一种长连接的建立方法、通信方法及建立通信系统。
背景技术:
随着互联网技术的发展和移动终端的普及,智能家居设备越来越普及,这些智能家居设备大多都要接入互联网,从而让移动终端远程控制智能家居设备。
目前,每台智能家居设备连入互联网后,每台智能家居设备都会和服务器建立长连接,因为这种方式简单,实现容易。但是,随着家庭的智能家居设备的增加,如果每台智能家居设备都与服务器建立长连接,会严重占用带宽,对服务器的性能消耗极大。
技术实现要素:
本发明的目的是提供一种长连接的建立方法、通信方法及建立通信系统,降低带宽的占用率,且减轻服务器的性能消耗。
本发明提供的技术方案如下:
一种长连接的建立方法,包括:步骤s100服务器接收当前路由器发送的长连接请求报文;步骤s200根据所述长连接请求报文,服务器得到所述当前路由器的源ip地址和端口ip地址;步骤s300根据所述源ip地址,服务器获取所述当前路由器所处的位置区域信息;步骤s400当所述源ip地址和所述端口ip地址一致、且所述位置区域信息对应的位置区域中无主路由器时,服务器与所述当前路由器建立长连接,并将所述当前路由器设置为主路由器。
在上述技术方案中,在一个区域建立一个集群,一个集群中设置一个主路由器,服务器只与主路由器建立长连接,由主路由器将数据发送给对应的智能设备。这种方式大大降低了与服务器建立长连接的设备,在保证数据正确传输的同时,也降低了带宽的占用率,且减小了服务器的性能消耗。
进一步,所述步骤s300之后还包括:步骤s500当所述位置区域信息对应的位置区域中存在主路由器时,服务器将存在的所述主路由器的端口ip地址发送给所述当前路由器;步骤s510所述当前路由器根据所述主路由器的端口ip地址,与所述主路由器建立长连接。
在上述技术方案中,若当前路由器所处的区域中已经存在了一个主路由器,那么当前路由器不再与服务器建立长连接,而是与主路由器建立长连接,从而降低服务器的性能消耗。
进一步,所述步骤s510进一步包括:步骤s511当所述当前路由器和主路由器建立长连接后,所述主路由器为所述当前路由器分配身份标识。
在上述技术方案中,主路由器会为当前路由器分配身份标识,便于后续数据的正确传输。
进一步,所述步骤s510之后还包括:步骤s520当所述位置区域信息对应的位置区域中还存在备用主路由器时,服务器将存在的所述备用主路由器的端口ip地址发送给所述当前路由器;步骤s530所述当前路由器根据所述备用主路由器的端口ip地址,与所述备用主路由器建立备用长连接。
在上述技术方案中,备用主路由器的存在给整个集群数据传输的稳定性提供了保证。
进一步,所述步骤s530之后还包括:步骤s600当所述源ip地址和所述端口ip地址一致时,服务器与所述当前路由器建立备用长连接,且将所述当前路由器设置为备用主路由器;步骤s610当所述源ip地址和所述端口ip地址不一致时,服务器将所述当前路由器设置为从路由器。
本发明还提供一种长连接的通信方法,包括:步骤s10当接收到智能终端发送的控制指令信息时,服务器解析所述控制指令信息,得到控制指令和设备标识;步骤s20服务器将所述控制指令信息发送给所述设备标识对应的主路由器;步骤s30当主路由器接收到所述控制指令信息时,主路由器将所述控制指令信息发送给所述设备标识对应的智能设备。
在上述技术方案中,数据的传输需要通过主路由器来一级级转发,降低了服务器长时间与各个智能设备保持长连接的性能消耗,提高了服务器的工作性能。
进一步,所述步骤s30具体包括:步骤s31主路由器将所述控制指令信息发送给所述设备标识对应的备用主路由器或从路由器;步骤s32备用主路由器或从路由器将所述控制指令信息发送给所述设备标识对应的智能设备。
本发明还提供一种长连接的建立通信系统,包括:服务器,至少一个路由器;所述服务器包括:服务器接收模块,用于接收当前路由器发送的长连接请求报文;其中,将当前发送所述长连接请求报文的路由器作为当前路由器;服务器解析模块,与所述服务器接收模块电连接,用于根据所述长连接请求报文,得到所述当前路由器的源ip地址和端口ip地址;服务器获取模块,与所述服务器解析模块电连接,用于根据所述源ip地址,获取所述当前路由器所处的位置区域信息;服务器连接模块,与所述服务器获取模块和所述服务器解析模块电连接,当所述源ip地址和所述端口ip地址一致、且所述位置区域信息对应的位置区域中无主路由器时,所述服务器连接模块用于与所述当前路由器建立长连接;服务器设置模块,与所述服务器获取模块和所述服务器解析模块电连接,当所述源ip地址和所述端口ip地址一致、且所述位置区域信息对应的位置区域中无主路由器时,所述服务器设置模块用于将所述当前路由器设置为主路由器。
在上述技术方案中,在一个区域建立一个集群,一个集群中设置一个主路由器,服务器只与主路由器建立长连接,由主路由器将数据发送给对应的智能设备。这种方式大大降低了与服务器建立长连接的设备,在保证数据正确传输的同时,也降低了带宽的占用率,且减小了服务器的性能消耗。
进一步,所述服务器还包括:服务器发送模块,与所述服务器获取模块电连接,当所述位置区域信息对应的位置区域中存在主路由器时,所述服务器发送模块将存在的所述主路由器的端口ip地址发送给所述当前路由器;每个所述路由器包括:路由接收模块,路由连接模块;所述当前路由器的路由接收模块,用于接收所述服务器发送的主路由器的端口ip地址;所述当前路由器的路由连接模块,用于根据所述主路由器的端口ip地址,与所述主路由器建立长连接。
进一步,每个所述路由器还包括:路由分配模块;所述主路由器的路由分配模块,当所述当前路由器和主路由器建立长连接后,所述主路由器的路由分配模块用于为所述当前路由器分配身份标识。
与现有技术相比,本发明的长连接的建立方法、通信方法及建立通信系统有益效果在于:
通过设置一个主路由器、若干个备用主路由器、若干个从路由器建立集群,服务器只与一个主路由器建立长连接,从而降低服务器的带宽和性能消耗。另外,备用主路由器会服务器和各从路由器建立备用长连接,在主路由器宕机时,成为新的主路由器,保证此集群数据传输的稳定性。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种长连接的建立方法、通信方法及建立通信系统的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明长连接的建立方法一个实施例的流程图;
图2是本发明长连接的建立方法另一个实施例的流程图;
图3是本发明长连接的通信方法一个实施例的流程图;
图4是本发明长连接的通信方法另一个实施例的流程图;
图5是本发明长连接的建立通信系统一个实施例的结构示意图;
图6是本发明长连接的建立通信系统另一个实施例的结构示意图;
图7是本发明长连接的建立通信系统另一个实施例的结构示意图;
图8是本发明主路由器与服务器建立长连接的一个实施例的流程图;
图9是本发明从路由器与主路由器建立长连接的一个实施例的流程图。
附图标号说明:
10.服务器,11.服务器接收模块,12.服务器解析模块,13.服务器获取模块,14.服务器连接模块,15.服务器设置模块,16.服务器发送模块,20.路由器,21.路由接收模块,22.路由连接模块,23.路由分配模块,24.路由发送模块,201.主路由器,202.备用主路由器,203.从路由器,301.智能设备。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
在本发明的一个实施例中,如图1所示,一种长连接的建立方法,包括:步骤s100服务器接收当前路由器发送的长连接请求报文;步骤s200根据所述长连接请求报文,服务器得到所述当前路由器的源ip地址和端口ip地址;步骤s300根据所述源ip地址,服务器获取所述当前路由器所处的位置区域信息;步骤s400当所述源ip地址和所述端口ip地址一致、且所述位置区域信息对应的位置区域中无主路由器时,服务器与所述当前路由器建立长连接,并将所述当前路由器设置为主路由器。
具体的,智能设备为智能家居设备,例如:智能电视机、智能空调等,智能设备一般都会通过家庭路由器,与其后台的服务器通信连接。本实施例中,利用家庭路由器作为数据传输的入口,即若此家庭路由器的wan口ip地址为公网ip,可以将此家庭路由器设置为主路由器(或备用主路由器),若将其设置为主路由器的话,服务器那边可以只与此主路由器建立长连接,而接入此主路由器的智能设备可以将报文发送给主路由器,再由主路由器通过与服务器的长连接端口转发给服务器。
当前路由器发送给服务器的长连接请求报文中,包括了当前路由器的wan口ip地址(即端口ip地址);而服务器在接收到长连接请求报文时,可以通过报文的传输路径提取出当前路由器的源ip地址。当端口ip地址和源ip地址一致时,则说明当前路由器的wan口ip地址为公网ip地址,具有被设为主路由器的资格。
可以预先设置不同的位置区域信息,例如:a区域、b区域、c区域。当获取了当前路由器的源ip地址时,可以根据此源ip地址判断当前路由器所述的位置,从而得到对应的位置区域信息,例如,判断当前路由器在a区域。然后获取a区域中的集群信息,即判断a区域是否已经存在主路由器,如果不存在的话,就说明a区域没有集群,可以将(具有公网ip地址的)当前路由器设置为主路由器,为后续建立集群打下基础。这里的集群是指同一个区域的路由器可以组建一个集群,一个集群中只有一台主路由器,例如:a区域可以通过一个主路由器建立集群。
服务器只与主路由器建立长连接,即以这个主路由器为主的集群中与智能设备有关的数据都是通过此主路由器与服务器的长连接通信接口实现的传输。这样的话,服务器那边可以只与此主路由器建立长连接,由主路由器将数据传输给正确的智能设备。
若当前路由器被设置为主路由器后,它会打开自己的长连接端口(例如:tcp8100),便于后续从路由器、备用主路由器与它的长连接。
本实施例中,在一个区域建立一个集群,一个集群中设置一个主路由器,服务器只与主路由器建立长连接,由主路由器将数据发送给对应的智能设备。这种方式大大降低了与服务器建立长连接的设备,在保证数据正确传输的同时,也降低了带宽的占用率,且减小了服务器的性能消耗。
优选地,所述步骤s300之后还包括:步骤s500当所述位置区域信息对应的位置区域中存在主路由器时,服务器将存在的所述主路由器的端口ip地址发送给所述当前路由器;步骤s510所述当前路由器根据所述主路由器的端口ip地址,与所述主路由器建立长连接。
具体的,若当前路由器所处的位置区域中已经存在了主路由器,说明集群已经建立,那么当前路由器就需要与主路由器建立长连接,实现数据的传输。
例如:当前路由器也在a区域,a区域已经存在一个主路由器了,那么服务器会把这个主路由器的端口ip地址发送给当前路由器,当前路由器会向主路由器发送长连接请求报文,当主路由器同意后,当前路由器就会接入到主路由器的长连接端口(例如:tcp8100)。
本实施例中,若当前路由器所处的区域中已经存在了一个主路由器,那么当前路由器不再与服务器建立长连接,而是与主路由器建立长连接,从而降低服务器的性能消耗。
优选的,所述步骤s510进一步包括:步骤s511当所述当前路由器和主路由器建立长连接后,所述主路由器为所述当前路由器分配身份标识。
具体的,当前路由器与主路由器建立长连接后,主路由器会为当前路由器分配身份标识,便于后续数据的正确传输。
需要注意的是,长连接请求报文中还包括:智能设备标识(即智能家居设备的id)。当服务器接到连接请求报文时,先判断当前路由器所处的位置区域中是否有主路由器,如果有的话,会把智能设备标识与存在的主路由器对应保存,同时会把主路由器的端口ip地址反馈给当前路由器,让当前路由器与主路由器建立长连接。同理,当前路由器向主路由器发送长连接请求报文时,主路由器会为当前路由器分配身份标识,并将此身份标识与智能设备标识对应保存,便于后续的数据传输。
主路由器为当前路由器分配身份标识,保证了同一集群中数据传输的准确性。
优选地,所述步骤s510之后还包括:步骤s520当所述位置区域信息对应的位置区域中还存在备用主路由器时,服务器将存在的所述备用主路由器的端口ip地址发送给所述当前路由器;步骤s530所述当前路由器根据所述备用主路由器的端口ip地址,与所述备用主路由器建立备用长连接。
具体的,备用主路由器就是主路由器的备用设备,当主路由器宕机或网络不通后,按照优先级规则选择一台备用主路由器作为新的主路由器,承担起与服务器数据传输的功能。
当前路由器向备用主路由器发送长连接请求报文,备用主路由器同意后使当前路由器与备用主路由器建立备用长连接。备用长连接是指有这个长连接通道,但是平时主路由器正常工作时,备用长连接是不会进行数据传输的。
备用主路由器的数量为一台、两台或多台。优先级规则可以为按照时间先后顺序,即先被设置为备用主路由器的备用主路由器在主路由器宕机后,先被设置为主路由器。例如:设置时间:备用主路由器a早于备用主路由器b,当主路由器宕机后,备用主路由器a成为新的主路由器。
在本实施例中,当备用主路由器成为新的主路由器后,它会作为主路由器为其它备用主路由器、从路由器分配身份标识,便于数据的传输;另外,也会让其它备用主路由器、从路由器反馈智能设备标识,让新的主路由器对应保存。同时,服务器端也会更新智能设备标识对应的主路由器,保证后续数据的精确发送。
备用主路由器会定时给主路由器发送心跳报文,主路由器接收到心中报文后,会发送心中响应报文,通过心跳报文来实现备用主路由器监听主路由器的工作状态是否正常,若出现问题,让优先级最高的备用主路由器立马成为新的主路由器,保证正常的数据传输。
备用主路由器的存在给整个集群数据传输的稳定性提供了保证。
优选地,所述步骤s530之后还包括:步骤s600当所述源ip地址和所述端口ip地址一致时,服务器与所述当前路由器建立备用长连接,且将所述当前路由器设置为备用主路由器;步骤s610当所述源ip地址和所述端口ip地址不一致时,服务器将所述当前路由器设置为从路由器。
具体的,源ip地址和端口ip地址一致,说明当前路由器的wan口ip地址为公网ip,具有成为主路由器的资格,但在已经存在了主路由器时,可以作为备用主路由器存在。因此,服务器将当前路由器设置为备用主路由器,并建立备用长连接。
而源ip地址和端口ip地址不一致,说明当前路由器的wan口ip地址为私网ip地址,不适合作为主路由器,因此,服务器将其设置为从路由器,让主路由器来实现服务器与此从路由器之间的数据传输。
在本发明的另一个实施例中,如图2所示,一种长连接的建立方法,包括:
步骤s100服务器接收当前路由器发送的长连接请求报文;
步骤s200根据所述长连接请求报文,服务器得到所述当前路由器的源ip地址和端口ip地址;
步骤s300根据所述源ip地址,服务器获取所述当前路由器所处的位置区域信息;
步骤s400当所述源ip地址和所述端口ip地址一致、且所述位置区域信息对应的位置区域中无主路由器时,服务器与所述当前路由器建立长连接,并将所述当前路由器设置为主路由器。
步骤s500当所述位置区域信息对应的位置区域中存在主路由器时,服务器将存在的所述主路由器的端口ip地址发送给所述当前路由器;
步骤s510所述当前路由器根据所述主路由器的端口ip地址,与所述主路由器建立长连接;步骤s510进一步包括:步骤s511当所述当前路由器和主路由器建立长连接后,所述主路由器为所述当前路由器分配身份标识;步骤s520当所述位置区域信息对应的位置区域中还存在备用主路由器时,服务器将存在的所述备用主路由器的端口ip地址发送给所述当前路由器;步骤s530所述当前路由器根据所述备用主路由器的端口ip地址,与所述备用主路由器建立备用长连接;
步骤s600当所述源ip地址和所述端口ip地址一致时,服务器与所述当前路由器建立备用长连接,且将所述当前路由器设置为备用主路由器;步骤s610当所述源ip地址和所述端口ip地址不一致时,服务器将所述当前路由器设置为从路由器。
具体的,本实施例通过设置一个主路由器、若干个备用主路由器、若干个从路由器建立集群,服务器只与一个主路由器建立长连接,从而降低服务器的带宽和性能消耗。另外,备用主路由器会服务器和各从路由器建立备用长连接,在主路由器宕机时,成为新的主路由器,保证此集群数据传输的稳定性。
在本发明的另一个实施例中,如图3所示,一种长连接的通信方法,包括:步骤s10当接收到智能终端发送的控制指令信息时,服务器解析所述控制指令信息,得到控制指令和设备标识;步骤s20服务器将所述控制指令信息发送给所述设备标识对应的主路由器;步骤s30当主路由器接收到所述控制指令信息时,主路由器将所述控制指令信息发送给所述设备标识对应的智能设备。
具体的,智能设备(即智能家居设备)可以通过用户的手机、平板电脑等移动终端进行远程控制。例如:用户想通过自己的手机远程控制家里的智能电视机。当智能设备处于上述建立的集群时,手机会把控制指令信息发送给服务器,服务器根据控制指令信息得到智能电视机的设备标识,查找对应的主路由器,把此控制指令信息转发给主路由器,再由主路由器转发此控制指令信息给智能电视机(假设此智能电视机是直接连接在主路由器上的)。
在本发明的另一个实施例中,如图4所示,一种长连接的通信方法,包括:
步骤s10当接收到智能终端发送的控制指令信息时,服务器解析所述控制指令信息,得到控制指令和设备标识;
步骤s20服务器将所述控制指令信息发送给所述设备标识对应的主路由器;
步骤s30当主路由器接收到所述控制指令信息时,主路由器将所述控制指令信息发送给所述设备标识对应的智能设备;
所述步骤s30具体包括:步骤s31主路由器将所述控制指令信息发送给所述设备标识对应的备用主路由器或从路由器;步骤s32备用主路由器或从路由器将所述控制指令信息发送给所述设备标识对应的智能设备。
具体的,假设智能电视机是连接在从路由器或备用主路由器上,那么主路由器接收服务器转发的控制指令信息时,会根据控制指令信息中的设备标识查找对应的备用主路由器或从路由器,再将此控制指令信息转发给对应的备用主路由器或从路由器,再由备用主路由器或从路由器转头给智能电视机。
当智能设备连入上述的集群时,因只有一个主路由器与服务器建立长连接,因此,数据的传输需要通过主路由器来一级级转发,降低了服务器长时间与各个智能设备保持长连接的性能消耗,提高了服务器的工作性能。
在本发明的另一个实施例中,当某个智能设备发送报文给服务器时,主要经过以下几个步骤(这里主要是从智能设备连接到从路由器或备用主路由器的角度说明):
1.智能设备发送报文给从/备用主路由器,报文中包含智能设备的智能设备标识,即deviceid。
2.从/备用主路由器接受到该报文后,在报文上包裹一层,加上主路由器为它分配的身份标识,表明该智能设备在该从/备用主路由器下。
3.从/备用主路由器将报文发送给主路由器,主路由器将报文再次封装,加上主路由器的身份标识,表明该从/备用主路由器在该主路由器下,然后发送给云服务。
在本发明的另一个实施例中,服务器接收到主路由器发送的报文后,将响应报文发送给智能设备,主要经过以下几个步骤:
1.服务器根据主路由器的身份标识,将报文发送给主路由器。
2.主路由器解析报文,得到智能设备标识,根据智能设备标识得到对应的从/备用主路由器,然后将报文转发给从/备用主路由器
3.从/备用主路由器解析报文,得到智能设备的智能设备标识(deviceid号),然后将报文转发给智能设备。
在本发明的另一个实施例中,如图5所示,一种长连接的建立通信系统,其特征在于,包括:服务器,至少一个路由器。所述服务器10包括:
服务器接收模块11,用于接收当前路由器发送的长连接请求报文;其中,将当前发送所述长连接请求报文的路由器作为当前路由器;
服务器解析模块12,与所述服务器接收模块电连接,用于根据所述长连接请求报文,得到所述当前路由器的源ip地址和端口ip地址;
服务器获取模块13,与所述服务器解析模块电连接,用于根据所述源ip地址,获取所述当前路由器所处的位置区域信息;
服务器连接模块14,与所述服务器获取模块13和所述服务器解析模块12电连接,当所述源ip地址和所述端口ip地址一致、且所述位置区域信息对应的位置区域中无主路由器时,所述服务器连接模块用于与所述当前路由器建立长连接;
服务器设置模块15,与所述服务器获取模块和所述服务器解析模块电连接,当所述源ip地址和所述端口ip地址一致、且所述位置区域信息对应的位置区域中无主路由器时,所述服务器设置模块用于将所述当前路由器设置为主路由器。
具体的,智能设备为智能家居设备,例如:智能电视机、智能空调等,智能设备一般都会通过家庭路由器,与其后台的服务器通信连接。本实施例中,利用家庭路由器作为数据传输的入口,即若此家庭路由器的wan口ip地址为公网ip,可以将此家庭路由器设置为主路由器(或备用主路由器),若将其设置为主路由器的话,服务器那边可以只与此主路由器建立长连接,而接入此主路由器的智能设备可以将报文发送给主路由器,再由主路由器通过与服务器的长连接端口转发给服务器。
当前路由器发送给服务器的长连接请求报文中,包括了当前路由器的wan口ip地址(即端口ip地址);而服务器在接收到长连接请求报文时,可以通过报文的传输路径提取出当前路由器的源ip地址。当端口ip地址和源ip地址一致时,则说明当前路由器的wan口ip地址为公网ip地址,具有被设为备主路由器的资格。
可以预先设置不同的位置区域信息,例如:a区域、b区域、c区域。当获取了当前路由器的源ip地址时,可以根据此源ip地址判断当前路由器所述的位置,从而得到对应的位置区域信息,例如,判断当前路由器在a区域。然后获取a区域中的集群信息,即判断a区域是否已经存在主路由器,如果不存在的话,就说明a区域没有集群,可以将(具有公网ip地址的)当前路由器设置为主路由器,为后续建立集群打下基础。这里的集群是指同一个区域的路由器可以组建一个集群,一个集群中只有一台主路由器,例如:a区域可以通过一个主路由器建立集群。
服务器只与主路由器建立长连接,即以这个主路由器为主的集群中与智能设备有关的数据都是通过此主路由器与服务器的长连接通信接口实现的传输。这样的话,服务器那边可以只与此主路由器建立长连接,由主路由器将数据传输给正确的智能设备。
若当前路由器被设置为主路由器后,它会打开自己的长连接端口(例如:tcp8100),便于后续从路由器、备用主路由器与它的长连接。
本实施例中,在一个区域建立一个集群,一个集群中设置一个主路由器,服务器只与主路由器建立长连接,由主路由器将数据发送给对应的智能设备。这种方式大大降低了与服务器建立长连接的设备,在保证数据正确传输的同时,也降低了服务器的带宽占用率,且减小了服务器的性能消耗。
优选地,如图6所示,所述服务器还包括:服务器发送模块16,与所述服务器获取模块13电连接,当所述位置区域信息对应的位置区域中存在主路由器时,所述服务器发送模块将存在的所述主路由器的端口ip地址发送给所述当前路由器;每个所述路由器20包括:路由接收模块21,路由连接模块22。
所述当前路由器的路由接收模块,用于接收所述服务器发送的主路由器的端口ip地址;所述当前路由器的路由连接模块,用于根据所述主路由器的端口ip地址,与所述主路由器建立长连接。
具体的,若当前路由器所处的位置区域中已经存在了主路由器,说明集群已经建立,那么当前路由器就需要与主路由器建立长连接,实现数据的传输。
例如:当前路由器也在a区域,a区域已经存在一个主路由器了,那么服务器会把这个主路由器的端口ip地址发送给当前路由器,当前路由器会向主路由器发送长连接请求报文,当主路由器同意后,当前路由器就会接入到主路由器的长连接端口(例如:tcp8100)。
本实施例中,若当前路由器所处的区域中已经存在了一个主路由器,那么当前路由器不再与服务器建立长连接,而是与主路由器建立长连接,从而降低服务器的性能消耗。
优选地,每个所述路由器还包括:路由分配模块23。
所述主路由器的路由分配模块,当所述当前路由器和主路由器建立长连接后,所述主路由器的路由分配模块用于为所述当前路由器分配身份标识。
具体的,当前路由器与主路由器建立长连接后,主路由器会为当前路由器分配身份标识,便于后续数据的正确传输。
需要注意的是,长连接请求报文中还包括:智能设备标识(即智能家居设备的id)。当服务器接到连接请求报文时,先判断当前路由器所处的位置区域中是否有主路由器,如果有的话,会把智能设备标识与存在的主路由器对应保存,同时会把主路由器的端口ip地址反馈给当前路由器,让当前路由器与主路由器建立长连接。同理,当前路由器向主路由器发送长连接请求报文时,主路由器会为当前路由器分配身份标识,并将此身份标识与智能设备标识对应保存,便于后续的数据传输。
主路由器为当前路由器分配身份标识,保证了同一集群中数据传输的准确性。
优选地,服务器发送模块16,进一步用于当所述位置区域信息对应的位置区域中还存在备用主路由器时,将存在的所述备用主路由器的端口ip地址发送给所述当前路由器;所述当前路由器的路由连接模块,进一步用于根据所述备用主路由器的端口ip地址,与所述备用主路由器建立备用长连接。
优选地,服务器设置模块15,进一步用于当所述源ip地址和所述端口ip地址一致、且所述位置区域信息对应的位置区域中有主路由器时,将所述当前路由器设置为备用主路由器;以及,当所述源ip地址和所述端口ip地址不一致时,将所述当前路由器设置为从路由器。
服务器连接模块14,进一步用于当所述源ip地址和所述端口ip地址一致、且所述位置区域信息对应的位置区域中有主路由器时,与所述当前路由器建立备用长连接。
优选地,每个路由器还包括:路由发送模块24。
服务器接收模块11,进一步用于接收智能终端发送的控制指令信息;服务器解析模块12,进一步用于解析所述控制指令信息,得到控制指令和设备标识;服务器发送模块16,进一步用于将所述控制指令信息发送给所述设备标识对应的主路由器。
所述主路由器的路由接收模块,进一步用于接收服务器发送的所述控制指令信息;所述主路由器的路由发送模块,用于将所述控制指令信息发送给所述设备标识对应的智能设备。
优选地,所述主路由器的路由发送模块,进一步用于将所述控制指令信息发送给所述设备标识对应的备用主路由器或从路由器;所述备用主路由器或所述从路由器的路由发送模块,用于将所述控制指令信息发送给所述设备标识对应的智能设备。
具体的,此系统实施例的具体实施过程与上述方法实施例中的具体实施过程相同,在此不再详细描述。
如图7所示,一种长连接的建立通信系统,包括:一个服务器10,一个主路由器201,两个备用主路由器202,一个从路由器203,四个智能设备301。
服务器与主路由器201建立长连接;两个备用主路由器202与服务器建立备用长连接、与主路由器201建立长连接,两个备用主路由器之间建立备用长连接;从路由器203与主路由器201建立长连接、与两个备用主路由器建立备用长连接;两个智能设备301连接于从路由器203下;一个智能设备301连接于主路由器201下,一个智能设备连接于其中一个备用主路由器202下。
如图8所示,主路由器与服务器建立长连接的过程为:
1、当前路由器(即图中的主路由器201)发送长连接请求报文(包括了自己的wan口ip地址);
1.1、服务器判断是否为公网ip;
1.2、若为公网ip,则判断是否有合适的集群加入(即其所在的位置区域中是否存在主路由器);
1.3、没有主路由器,将当前路由器设置为主路由器。
2、主路由器与服务器建立长连接;
2.1、服务器确认长连接。
3、主路由器打开自己的长连接端口;
4、主路由器初始化完成;
4.1、服务器确认主路由器初始化完成。
如图9所示,从路由器与主路由器建立长连接的过程为:
5、当前路由器(即图中的从路由器203)发送长连接请求报文(包括了自己的wan口ip地址);
5.1服务器判断为私网ip,因此当前路由器可以作为从路由器进行后续的处理;
5.2服务器寻找合适的集群(即通过当前路由器的位置区域信息,查找对应的主路由器);
6、服务器将主路由器的端口ip地址发送给当前路由器(即从路由器);
7、当前路由器(即从路由器)接入到主路由器的长连接端口;
7.1主路由器为当前路由器(即从路由器)分配身份标识。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。