一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

长连接装置和网络系统的制作方法

2021-12-07 20:16:00 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种长连接装置和网络系统。


背景技术:

2.终端设备和服务器可以基于传输控制协议(transmission control protocol,tcp)或者用户数据报协议(user datagram protocol,udp)等传输层协议建立长连接。长连接在终端设备与服务器完成一次数据传输之后不会断开,因此后续的数据传输都可以通过该长连接进行,这使得长连接在即时通信场景和游戏场景中得到广泛应用。
3.终端设备与服务器的长连接可以通过心跳机制来维持。一般来说,终端设备可以预先设置向服务器发送心跳报文的周期,在终端设备与服务器建立长连接之后,终端设备可以按照设定的周期定期向服务器发送心跳报文,以向服务器告知自身的存在。如果服务器接收到了终端设备发送的心跳报文,则服务器可以确定终端设备为在线状态,因此不会断开长连接。
4.可以理解的是,在长连接状态下,终端设备需要定时唤醒其处理器(例如:系统芯片soc)和wifi模块,以向服务器发送心跳报文,从而产生一定的功耗。一般来说,终端设备的心跳周期在1分钟到数十分钟不等,因此终端设备唤醒soc和wifi模块的频率会非常高,导致终端设备的功耗显著增加,降低了终端设备的续航时间。


技术实现要素:

5.本技术实施例提供了一种长连接方法、装置和网络系统,能够降低终端设备的功耗,延长终端设备的续航时间。
6.第一方面,本技术实施例提供了一种长连接方法。该方法可以应用于终端设备,该终端设备可以通过接入点设备与服务器建立有长连接,该方法包括:终端设备从自身的tcp/ip协议栈中获取长连接的第一套接字socket信息;终端设备将第一socket信息发送给接入点设备,以使得接入点设备根据第一socket信息向服务器发送心跳报文,心跳报文用于终端设备与服务器维持长连接。
7.本技术实施例提供的方法,接入点设备能够代理终端设备与服务器保持心跳,使得终端设备不需要为了发送心跳报文而频繁地唤醒soc和wifi模块,由此降低了终端设备的功耗,延长了终端设备的续航时间。
8.在一种可选择的实现方式中,终端设备从自身的tcp/ip协议栈中获取长连接的第一socket信息,包括:终端设备在准备进入低功耗状态时,从tcp/ip协议栈中获取第一socket信息。
9.在一种可选择的实现方式中,终端设备将第一socket信息发送给接入点设备之后,还包括:终端设备进入低功耗状态。
10.在一种可选择的实现方式中,终端设备将第一socket信息发送给接入点设备之后,还包括:终端设备接收接入点设备发送的第二socket信息,第二socket信息包括接入点
设备维持长连接期间维护的socket信息。
11.在一种可选择的实现方式中,终端设备接收接入点设备发送的第二socket信息,包括:终端设备接收接入点设备发送的信标beacon帧和/或无数据null data帧,beacon帧和/或null data帧包含第二socket信息。
12.在一种可选择的实现方式中,终端设备在结束低功耗状态时,将第二socket信息更新到tcp/ip协议栈中。
13.在一种可选择的实现方式中,socket信息包括传输控制协议tcp序列号seq和tcp确认号ack。
14.第二方面,本技术实施例提供了一种长连接方法。该方法可以应用于接入点设备,包括:接入点设备接收终端设备发送的第一socket信息,第一socket信息是终端设备在与服务器建立有长连接的情况下,从自身的tcp/ip协议栈中获取的;接入点设备根据第一socket信息向服务器发送心跳报文,心跳报文用于终端设备与服务器维持长连接。
15.本技术实施例提供的方法,接入点设备能够代理终端设备与服务器保持心跳,使得终端设备不需要为了发送心跳报文而频繁地唤醒soc和wifi模块,由此降低了终端设备的功耗,延长了终端设备的续航时间。
16.在一种可选择的实现方式中,接入点设备根据第一socket信息向服务器发送心跳报文之后,还包括:接入点设备向终端设备发送第二socket信息,第二socket信息包括接入点设备维持长连接期间维护的socket信息。
17.在一种可选择的实现方式中,接入点设备向终端设备发送第二socket信息,包括:接入点设备向终端设备发送信标beacon帧和/或无数据null data帧,beacon帧和/或null data帧包含第二socket信息。
18.在一种可选择的实现方式中,当终端设备与接入点设备断开连接时,接入点设备停止向服务器发送心跳报文。
19.在一种可选择的实现方式中,当接入点设备接收到终端设备向服务器发送心跳报文时,接入点设备停止向服务器发送心跳报文。
20.在一种可选择的实现方式中,socket信息包括传输控制协议tcp序列号seq和tcp确认号ack。
21.第三方面,本技术提供了一种网络系统,包括:包括终端设备和接入点设备,终端设备安装有第一应用程序app;终端设备用于:在解锁状态下,根据第一socket信息向第一app所关联的服务器发送心跳报文,心跳报文通过第一接入点设备转发给服务器,其中,心跳报文用于终端设备与服务器维持长连接,第一socket信息为终端设备与服务器维持长连接所需要的数据;终端设备,还用于从解锁状态切换到锁屏状态时,将第一socket信息发送给第一接入点设备;第一接入点设备用于:在接收到第一socket信息之后,根据第一socket信息代理终端设备向服务器发送心跳报文。
22.本技术实施例提供的网络系统,在终端设备与服务器建立有长连接的情况下,第一接入点设备能够代理终端设备与服务器保持心跳,使得终端设备在锁屏状态下不需要为了发送心跳报文而频繁地唤醒soc和wifi模块,由此降低了终端设备的功耗,延长了终端设备的续航时间。
23.在一种可选择的实现方式中,第一接入点设备还用于在代理终端设备向服务器发
送心跳报文期间,向终端设备发送第二socket信息,第二socket信息为第一接入点设备在代理终端设备向服务器发送心跳报文期间生成的用于维持长连接的数据。
24.在一种可选择的实现方式中,终端设备具体用于通过wifi模块接收第二socket信息,以及将第二socket信息保存在wifi模块中。
25.在一种可选择的实现方式中,终端设备还用于在锁屏状态下与第一接入点设备断开连接时,连接到第二接入点设备,以及,根据第二socket信息向服务器发送心跳报文,心跳报文通过第二接入点设备转发给服务器。
26.在一种可选择的实现方式中,终端设备还用于从锁屏状态进入到解锁状态时,根据第二socket信息向服务器发送心跳报文,心跳报文通过第一接入点设备转发给服务器。
27.在一种可选择的实现方式中,终端设备,还用于在解锁状态下进入到低功耗状态时,将第一socket信息发送给第一接入点设备;第一接入点设备,还用于在接收到第一socket信息之后,根据第一socket信息代理终端设备向服务器发送心跳报文。
28.在一种可选择的实现方式中,终端设备还用于在解锁状态下结束低功耗状态时,根据第二socket信息向服务器发送心跳报文,心跳报文通过第一接入点设备转发给服务器。
29.在一种可选择的实现方式中,第一接入点设备具体用于在代理终端设备向服务器发送心跳报文期间,周期性地向终端设备发送信标beacon帧和/或无数据null data帧,beacon帧和/或null data帧包含第二socket信息。
30.在一种可选择的实现方式中,第一接入点设备还用于在接收到来自终端设备的心跳报文之后,停止代理终端设备向服务器发送心跳报文。
31.第四方面,本技术实施例提供了一种长连接装置,该长连接装置可以应用于终端设备,终端设备安装有第一app;该长连接装置包括收发器、存储器和处理器,存储器包括有程序指令,程序指令被处理器运行时,使得终端设备执行如下方法步骤:在解锁状态下,根据第一socket信息向第一app所关联的服务器发送心跳报文,心跳报文通过第一接入点设备转发给服务器,其中,心跳报文用于终端设备与服务器维持长连接,第一socket信息为终端设备与服务器维持长连接所需要的数据;从解锁状态切换到锁屏状态时,将第一socket信息发送给第一接入点设备,以使得第一接入点设备根据第一socket信息代理终端设备向服务器发送心跳报文。
32.本技术实施例提供的长连接装置,在终端设备与服务器建立有长连接的情况下,终端设备能够在进入锁屏状态时将第一socket信息发送给第一接入点设备,使得第一接入点设备能够代理终端设备与服务器保持心跳,这样,终端设备在锁屏状态下不需要为了发送心跳报文而频繁地唤醒soc和wifi模块,由此降低了终端设备的功耗,延长了终端设备的续航时间。
33.在一种可选择的实现方式中,程序指令还使得终端设备执行如下方法步骤:通过wifi模块接收接入点设备发送的第二socket信息,以及将第二socket信息保存在wifi模块中,第二socket信息为第一接入点设备在代理终端设备向服务器发送心跳报文期间生成的用于维持长连接的数据。
34.在一种可选择的实现方式中,程序指令还使得终端设备执行如下方法步骤:在锁屏状态下与第一接入点设备断开连接时,连接到第二接入点设备,以及,根据第二socket信
息向服务器发送心跳报文,心跳报文通过第二接入点设备转发给服务器。
35.在一种可选择的实现方式中,程序指令还使得终端设备执行如下方法步骤:从锁屏状态进入到解锁状态时,根据第二socket信息向服务器发送心跳报文,心跳报文通过第一接入点设备转发给服务器。
36.在一种可选择的实现方式中,程序指令还使得终端设备执行如下方法步骤:在解锁状态下进入到低功耗状态时,将第一socket信息发送给第一接入点设备,以使第一接入点设备根据第一socket信息代理终端设备向服务器发送心跳报文。
37.在一种可选择的实现方式中,程序指令还使得终端设备执行如下方法步骤:在解锁状态下结束低功耗状态时,根据第二socket信息向服务器发送心跳报文,心跳报文通过第一接入点设备转发给服务器。
38.第五方面,本技术实施例提供了一种长连接装置,该长连接装置可以应用于第一接入点设备;该装置包括收发器、存储器和处理器,存储器包括有程序指令,程序指令被处理器运行时,使得第一接入点设备执行如下方法步骤:接收终端设备发送的第一socket信息,其中,第一socket信息是终端设备从解锁状态切换到锁屏状态时发送的,第一socket信息为终端设备与服务器维持长连接所需要的数据;根据第一socket信息代理终端设备向服务器发送心跳报文,心跳报文用于终端设备与服务器维持长连接。
39.本技术实施例提供的长连接装置,在终端设备与服务器建立有长连接的情况下,终端设备能够在进入锁屏状态时将第一socket信息发送给第一接入点设备,使得第一接入点设备能够代理终端设备与服务器保持心跳,这样,终端设备在锁屏状态下不需要为了发送心跳报文而频繁地唤醒soc和wifi模块,由此降低了终端设备的功耗,延长了终端设备的续航时间。
40.在一种可选择的实现方式中,程序指令还使得第一接入点设备执行如下方法步骤:在代理终端设备向服务器发送心跳报文期间,向终端设备发送第二socket信息,第二socket信息为第一接入点设备在代理终端设备向服务器发送心跳报文期间生成的用于维持长连接的数据。
41.在一种可选择的实现方式中,程序指令还使得第一接入点设备执行如下方法步骤:在代理终端设备向服务器发送心跳报文期间,周期性地向终端设备发送信标beacon帧和/或无数据null data帧,beacon帧和/或null data帧包含第二socket信息。
42.在一种可选择的实现方式中,程序指令还使得第一接入点设备执行如下方法步骤:在接收到来自终端设备的心跳报文之后,停止代理终端设备向服务器发送心跳报文。
43.第六方面,本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法步骤。
44.第七方面,本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法步骤。
45.第八方面,本技术实施例还提供了一种芯片系统,该芯片系统包括处理器,用于支持上述装置或系统实现上述方面中所涉及的功能,例如,生成或处理上述方法中所涉及的信息。
附图说明
46.图1是本技术实施例示出的终端设备与服务器端到端连接的示意图;
47.图2是本技术实施例提供的接入点设备200的结构示意图;
48.图3是本技术实施例提供的终端设备100的结构示意图;
49.图4是终端设备与应用服务器建立长连接的示意图;
50.图5示出了终端设备与服务器建立长连接的一种情景;
51.图6示出了终端设备进入低功耗状态的一种情景;
52.图7示出了终端设备进入低功耗状态的另一种情景;
53.图8示出了终端设备进入低功耗状态的另一种情景;
54.图9示出了终端设备在低功耗状态下与服务器维持长连接的一种方式;
55.图10示出了终端设备在低功耗状态下与服务器维持长连接的另一种方式;
56.图11是本技术实施例提供的长连接方法的建立连接阶段的流程图;
57.图12是本技术实施例提供的长连接方法的代理连接阶段的流程图;
58.图13是本技术实施例提供的长连接方法的步骤s105的流程图;
59.图14是本技术实施例提供的长连接方法的步骤s302的流程图;
60.图15是本技术实施例提供的长连接方法的步骤s302的流程图;
61.图16是接入点设备发送代理成功的消息的流程图;
62.图17是本技术实施例提供的终端设备收回代理的流程图;
63.图18是终端设备与接入点设备断开连接的场景图;
64.图19是终端设备与接入点设备断开连接的场景图;
65.图20是本技术实施例提供的长连接方法的结束代理阶段的流程图;
66.图21是终端设备通过基站发送心跳报文的示意图;
67.图22是路由设备在终端设备锁屏时代理终端设备发送心跳报文的示意图;
68.图23是终端设备通过路由设备发送心跳报文的示意图;
69.图24是终端设备与路由设备断开连接之后发送心跳报文的示意图;
70.图25是路由设备在终端设备处于低功耗状态时代理终端设备发送心跳报文的示意图;
71.图26是本技术实施例提供的一种长连接装置的结构示意图;
72.图27是本技术实施例提供的另一种长连接装置的结构示意图;
73.图28是本技术实施例提供的另一种长连接装置的结构示意图;
74.图29是本技术实施例提供的芯片系统的结构示意图。
具体实施方式
75.互联网internet中的两个节点设备,例如:运行有某个应用程序的终端设备和这个应用程序的服务器,可以基于传输控制协议tcp或者用户数据报协议udp等传输层协议建立端到端连接,以进行数据传输。
76.图1是本技术实施例示出的终端设备与服务器端到端连接的示意图。如图1所示,终端设备100可以通过接入点设备200与服务器300建立端到端连接。其中,接入点设备200例如可以包括无线路由器;接入点设备200能够接入到互联网,与互联网中的其他网络设备
network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中,例如集成在系统芯片(system on a chip,soc)中。处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。
83.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
84.存储器120可以用于存储计算机可执行程序代码,可执行程序代码包括指令。存储器120可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,存储器120可以包括一个或者多个存储单元,例如可以包括易失性存储器(volatile memory),如:动态随机存取存储器(dynamic random access memory,dram)、静态随机存取存储器(static random access memory,sram)等;还可以包括非易失性存储器(non-volatile memory,nvm),如:只读存储器(read-only memory,rom)、闪存(flash memory)等。处理器110通过运行存储在存储器120的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备100的各种功能应用以及数据处理。
85.终端设备100的无线通信功能可以通过射频电路140、移动通信模块150、无线通信模块160、调制解调处理器以及基带处理器等实现。
86.射频电路140可以包括至少一个天线141,用于发射和接收电磁波信号。终端设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线141复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
87.移动通信模块150可以提供应用在终端设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线141接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线141转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
88.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(包括但不限于扬声器,受话器等)输出
声音信号,或通过显示屏180显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
89.无线通信模块160可以包括wi-fi模块,蓝牙(bluetooth,bt)模块、全球导航卫星系统(global navigation satellite system,gnss)模块、近距离无线通信技术(near field communication,nfc)模块、红外(infrared,ir)模块等。无线通信模块160可以是集成上述至少一个模块的一个或多个器件。无线通信模块160经由天线141接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线141转为电磁波辐射出去。
90.本技术实施例中,终端设备100的无线通信功能例如可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),第五代移动通信技术新空口(5th generation mobile networks new radio,5g nr),bt,gnss,wlan,nfc,fm,和/或ir等功能。gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
91.摄像头170用于捕获静态图像或视频。摄像头170包括镜头和感光元件,物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv,ryyb等格式的图像信号。在一些实施例中,终端设备100可以包括1个或n个摄像头170,n为大于1的正整数。
92.npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现终端设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
93.显示屏180用于显示图像,视频等。显示屏180包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,终端设备100可以包括1个或n个显示屏180,n为大于1的正整数。
94.sim卡接口190用于连接sim卡。sim卡可以通过插入sim卡接口190,或从sim卡接口
190拔出,实现和终端设备100的接触和分离。终端设备100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口190可以支持nano sim卡,micro sim卡,sim卡等。同一个sim卡接口190可以同时插入多张卡。多张卡的类型可以相同,也可以不同。sim卡接口190也可以兼容不同类型的sim卡。sim卡接口190也可以兼容外部存储卡。终端设备100通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,终端设备100采用esim,即:嵌入式sim卡。esim卡可以嵌在终端设备100中,不能和终端设备100分离。
95.可以理解的是,本技术实施例示意的结构并不构成对接入点设备和终端设备的具体限定。在本技术另一些实施例中,接入点设备和终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
96.参照图4,终端设备上安装的应用与远端的应用服务器通过网络建立长连接。若该长连接在一定时间内没有数据通信,则核心网将断开该长连接。因此应用需要通过心跳机制保持与应用服务器的长连接。所谓的心跳机制,即终端设备与服务器之间,周期性地进行心跳包的传输,以确保长连接的正常。譬如,终端设备每隔一个时间间隔即发送一个心跳包给服务器,如果服务器在特定时间内响应心跳包,则说明终端设备与服务器之间的连接正常;如果服务器在特定时间内未响应心跳包,则说明终端设备与服务器之间的连接断开,在获知断线后,即可以采取故障检测和重连等补救措施。心跳业务也可以采用服务器主动向终端设备发送心跳包的方式,或者其他方式实现。
97.应用一般拥有一个预设心跳周期,以满足当前应用业务的需要。终端设备上的应用若具有不同的心跳起始点和周期,则终端设备需要在不同时间点,多次唤醒终端设备的modem与接入点设备(例如基站、路由设备等)建立连接,并分别发送单个心跳包到各个应用服务器。若所有应用采用相同的心跳周期进行心跳业务,则可以通过一个连接发送多个心跳包,从而有效地降低能量损耗和信令的浪费。
98.为便于理解,图5示出了一个终端设备的使用情景,以示例性说明终端设备在什么情况下会需要与服务器建立长连接。如图5所示,终端设备接收到用户点击601应用程序的图标602的操作时,应用程序启动,此时,终端设备可以与该应用程序的服务器建立长连接,以便应用程序后续向服务器发送数据,以及接受服务器主动发送的数据。这类应用程序例如可以是即时通讯类应用、游戏类应用等。
99.终端设备在需要与服务器建立长连接时,可以向服务器发起连接请求;终端设备在接收到连接请求后,如果同意连接,则会与终端设备建立长连接,这一过程一般需要终端设备与服务器进行三次握手;终端设备与服务器建立长连接之后,即可通过该长连接进行报文传输,例如终端设备主动向服务器发送报文,或者服务器主动向终端设备发送报文等。
100.与短连接相比,长连接允许服务器主动向终端设备推送消息,因此可以用于实现应用程序与服务器的实时通讯,其中,实时通讯是指服务器有消息要向终端设备发送时,可以通过长连接实时将消息推送给终端设备,而不需要终端设备以轮询的方式向服务器发起请求以询问服务器是否有新的消息。示例地,如果终端设备安装了一款社交软件,那么终端设备可以与该社交软件的服务器或者终端设备厂商的推送服务器建立长连接,从而,当有新的消息到达服务器时,服务器可以通过长连接直接向终端设备推送该消息,使终端设备的用户能够及时看到该消息。
101.终端设备与服务器的长连接可以通过心跳机制来维持。一方面,终端设备可以预先设置向服务器发送心跳报文的周期,例如5分钟,10分钟等;在终端设备与服务器建立长连接之后,如果终端设备此刻没有产生需要发送给服务器的数据,那么终端设备会按照设定的周期定期向服务器发送心跳报文,以保持与服务器的连接。另一方面,如果服务器接收到了终端设备发送的心跳报文,则服务器可以确定终端设备为在线状态,如果服务器在持续的几个周期内(例如3个周期内)都没有接收到终端设备发送的心跳报文,则服务器可以认为终端设备已经离线,那么服务器可以断开与终端设备的连接。另外,服务器在接收到终端设备发送的心跳报文之后,还可以针对心跳报文做出回应,即向终端设备发送一个确认报文,使得终端设备确定服务器是在线状态,那么,如果终端设备在持续的几个周期内(例如3个周期内)都没有接收到服务器的确认报文,则终端设备可以认为服务器为离线状态,那么终端设备可以断开与服务器的连接。
102.终端设备为了降低功耗,会在某些场景下进入低功耗状态。在一些实施例中,当终端设备处于低功耗状态时,终端设备的应用处理器可以处于休眠状态,基带处理器接收到数据时,可以唤醒应用处理器并且将接收到的数据发送给应用处理器,并且以较低的频率运行,以降低功耗。
103.为便于理解,图6-图8示出了一些终端设备进入低功耗状态的情景,以示例性说明终端设备在什么情况下会进入低功耗状态。如图6所示,当终端设备接收到用户点击锁屏图标606,或者按下锁屏按键607的操作时,终端设备会锁屏并且熄灭屏幕,进入待机模式,此时,终端设备可以进入低功耗状态,以降低待机的功耗。如图7所示,当终端设备在一段时间内(例如1分钟内)没有接收到用户的操作时,终端设备会锁屏并且熄灭屏幕,进入待机模式,此时,终端设备可以进入低功耗状态,以降低待机的功耗。如图8所示,当终端设备的电池电量不足,例如电池电量低于20%时,终端设备可以在显示屏弹出用于询问用户是否启用低功耗模式以延长终端设备续航时间的对话框608,例如该对话框608可以包含“暂不启用”和“立即启用”两个按钮,如果终端设备接收到了用户点击“立即启用”按钮的操作,终端设备进入低功耗状态,直到终端设备接收到了用户关闭低功耗模式的操作或者终端设备接入外部电源。另外,终端设备还可以执行用户根据时间或者触发条件来设置的电源管理策略,从而根据电源管理策略进入或者离开低功耗状态,例如,终端设备在夜间进入低功耗状态。
104.目前,以图1示出的端到端连接场景为例,终端设备可以通过以下两种方式像服务器发送心跳报文,以维持长连接。
105.第一种方式如图9所示,在低功耗状态下,终端设备定时唤醒soc和wifi模块,通过soc和wifi模块向服务器发送心跳报文,这一过程具体包括:soc将心跳报文发送给终端设备的wifi模块;wifi模块接收到心跳报文之后,通过与接入点设备之间的wifi链路将心跳报文发送给接入点设备;接入点设备接收到心跳报文之后,将心跳报文转发给服务器,使服务器确认终端设备的存在。服务器接收到心跳报文之后,还可以向终端设备回复一个确认报文;如果接入点设备接收到了服务器发送的确认报文,接入点设备会通过wifi链路将确认报文发送给wifi模块;wifi模块接收到心跳报文之后,还会将确认报文发送给soc,使终端设备确认服务器为在线状态。在第一种方式中,终端设备需要定时唤醒soc和wifi模块,以发送心跳,因此终端设备每次发送心跳,soc和wifi模块都会产生一定的功耗;一般来说,
终端设备的心跳周期(即终端设备唤醒soc和wifi模块的间隔)在1分钟到数十分钟不等,因此终端设备唤醒soc和wifi模块会非常频繁,导致终端设备功耗增加,降低终端设备的续航时间。
106.第二种方式如图10所示,在低功耗状态下,终端设备的wifi模块保存发送心跳报文所需的信息,由wifi模块代理soc向服务器发送心跳报文,这一过程包括:wifi模块通过与接入点设备之间的wifi链路将心跳报文发送给接入点设备;接入点设备接收到心跳报文之后,将心跳报文转发给服务器,使服务器确认终端设备的存在。另外,如果接入点设备接收到了服务器发送的确认报文,接入点设备还会通过wifi链路将确认报文发送给wifi模块。在第二种方式中,soc可以保持低功耗状态而无需被唤醒,因此相比于第一种实现方式,功耗更低。但是,第二种方式仍需要定时唤醒wifi模块,因此依然会导致终端设备功耗增加,降低终端设备的续航时间。
107.在一些实施例中,当终端设备通过蜂窝模块连接接入点设备(例如,基站)的时候,也可以通过蜂窝模块发送心跳信息至服务器。例如,当终端设备通过蜂窝模块进行数据通信的时候,可以通过蜂窝数据与应用程序关联的服务器进行心跳测试以维持长连接,当终端设备从蜂窝通信切换为wi-fi通信的时候,可以将维持心跳服务的数据发送给接入点设备(例如,路由器),当终端设备锁屏或者待机之后,所述接入点设备可以通过所述数据与应用程序关联的服务器进行心跳服务,进一步地,当终端设备亮屏或者解锁之后,还可以通过所述蜂窝模块进行心跳服务,当终端设备断开所述wi-fi通信的时候,还可以继续通过蜂窝模块进行心跳服务。
108.为了进一步降低终端设备在低功耗状态下的功耗,本技术实施例还提供了一种长连接方法,该方法可以应用于图1所示的场景中。该方法例如可以包括建立连接阶段、代理连接阶段和取消代理阶段。
109.本技术实施例提供的长连接方法的建立连接阶段如图11所示可以包括步骤s101-s103。
110.步骤s101,当终端设备需要与服务器建立长连接时,终端设备通过套接字socket编程接口向服务器发送一个请求报文。
111.其中,用于建立长连接的请求报文的报文头中可以包括以下两个字段:建立连接标志位(synchronous,syn)和tcp序列号(sequence number,seq)。
112.具体实现中,终端设备的soc可以创建一个socket会话,并初始设置这个socket会话的seq=x,x可以是一个随机值。然后,soc向服务器发送包含seq=x的请求报文,该请求报文的syn=1,为便于描述,这里写作请求报文(syn=1,seq=x),请求报文(syn=1,seq=x)可以途经wifi模块和接入点设备发送给服务器。
113.步骤s102,服务器接收到请求报文之后,如果同意连接,向终端设备发送一个确认报文。
114.其中,该确认报文的报文头中可以包括以下四个字段:确认标位置位(acknowledgement,ack)、建立连接标志位(synchronous,syn)、tcp序列号seq和tcp确认号(acknowledgement number,ack)。
115.具体实现中,服务器接在收到请求报文(syn=1,seq=x)之后,可以初设设置seq=y,y可以是一个随机值。然后,服务器将请求报文(syn=1,seq=x)中的seq加1,作为ack
的值,即ack=x 1。然后,服务器向终端设备发送包含seq=y、ack=x 1的确认报文,该确认报文的syn=1、ack=1,为便于描述,这里写作确认报文(syn=1、ack=1、seq=y、ack=x 1),确认报文(syn=1、ack=1、seq=y、ack=x 1)可以途经接入点设备和wifi模块发送给终端设备。
116.步骤s103,终端设备接收到服务器的确认报文后,向服务器发送一个确认报文。
117.其中,该确认报文的报文头中可以包括以下三个字段:确认标位置位ack、tcp序列号seq和tcp确认号ack。
118.具体实现中,在终端设备接收到确认报文(syn=1、ack=1、seq=y、ack=x 1)之后,soc可以将上一次发送报文使用的seq加1,作为本次发送报文的seq,即seq=x 1,并且,soc可以将确认报文(syn=1、ack=1、seq=y、ack=x 1)中的seq加1,作为本次发送报文的ack,即ack=y 1。然后,soc向服务器发送包含seq=x 1、ack=y 1的确认报文,该确认报文的ack=1,为便于描述,这里写作确认报文(seq=x 1、ack=y 1、ack=1),确认报文(seq=x 1、ack=y 1、ack=1)可以途经wifi模块和接入点设备发送给服务器。
119.以上步骤s101-步骤s103也称为tcp的三次握手,终端设备和服务器经过三次握手后即可建立长连接,后续的传输数据都基于这个长连接进行。
120.需要补充说明的是,上述报文中包含的seq、ack等信息可以称作该长连接的socket信息,socket信息可以保存在终端设备的tcp/ip协议栈中。示例地,对于运行有android系统的终端设备,其tcp/ip协议栈位于android系统的linux内核(linux kernel)中,因此,socket信息保存在android系统内核的tcp/ip协议栈中。另外,在长连接建立之后,随着终端设备与服务器之间报文的收发,tcp/ip协议栈中保存的socket信息是不断变化的,一般来说,tcp/ip协议栈保存的socket信息可以包含终端设备最后一次收发报文的socket信息。
121.在终端设备和服务器建立长连接之后,如果终端设备与服务器之间没有数据传输,终端设备可以定时向服务器发送心跳报文,以维持长连接。
122.在一种实现方式中,终端设备可以在一个定时器timer事件中向服务器发送心跳报文。例如,定时器事件可以在心跳报文发送的同时开始倒计时;在倒计时的过程中,终端设备不断检测是否接收到服务器回应的确认报文;如果终端设备在倒计时结束时依然没有接收到服务器的确认报文,则终端设备可以认为服务器已经离线;如果终端设备在倒计时过程中接收到服务器的确认报文,则终端设备可以确定服务器在线,终端设备与服务器可以继续维持长连接,终端设备会在倒计时结束时重置定时器事件,以再次向服务器发送心跳报文。
123.在一种实现方式中,终端设备可以利用tcp的keepalive功能实现定时向服务器发送心跳报文。例如,当终端设备开启tcp的keepalive功能时,如果终端设备与服务器之间在一段时间内没有数据传输,则终端设备会向服务器发送心跳报文;如果服务器接收到这个心跳报文,会向终端设备回复一个确认报文,以告知自己的存在,这样终端设备与服务器的长连接就可以继续维持;如果终端设备在一段时间内没有接收到确认报文,则会再次向服务器发送一个心跳报文,经过几次重试之后,如果依然没有接收到确认报文,终端设备会断开与服务器的长连接。
124.其中,心跳报文可以是仅包含有报文头而不包含数据的空报文,心跳报文的报文
头中可以包含seq字段,seq的值可以是tcp/ip协议栈保存的终端设备最后一次向服务器发送的报文中的seq的值。示例地,如果终端设备最后一次向服务器发送的报文中的seq=x 1,那么心跳报文的seq=x 1,这里写作心跳报文(seq=x 1)。
125.其中,服务器针对心跳报文回复的确认报文可以是仅包含有报文头而不包含数据的空报文,该确认报文的报文头可以包含ack字段,该ack的值可以是心跳报文的seq的值加1,例如,当服务器接收到了心跳报文(seq=x 1)时,确认报文的ack=x 2,这里写作确认报文(ack=x 2)。
126.本技术实施例提供的长连接方法的代理连接阶段如图12所示可以包括步骤s104-s106。
127.步骤s104,终端设备在与服务器建立有长连接的情况下,从自身的tcp/ip协议栈中获取长连接的第一socket信息。
128.具体实现中,终端设备可以在准备进入低功耗状态时,执行步骤s104。例如:在图6中,当用户在终端设备的显示屏内点击锁屏图标,或者按下终端设备机身的锁屏按键时,终端设备可以执行步骤s104;在图7中,当用户在一段时间内(例如1分钟内)没有操作终端设备时,终端设备可以执行步骤s104;在图8中,当终端设备的电池电量不足时,如果用户在终端设备显示屏弹出的对话框中点击“立即启用”按钮,终端设备可以执行步骤s104。
129.第一socket信息可以包括tcp/ip协议栈在终端设备准备进入低功耗状态时保存的seq和ack信息,这些seq和ack信息可以是终端设备最后一次与服务器收发报文中的seq和ack信息。
130.步骤s105,终端设备将第一socket信息发送给接入点设备,以使得接入点设备根据第一socket信息向服务器发送心跳报文,以维持长连接。
131.如图13所示,步骤s105具体可以通过以下步骤s201-步骤s202实现:
132.步骤s201,终端设备的soc将第一socket信息发送给wifi模块。
133.soc将第一socket信息发送给wifi模块之后,则可以进入低功耗状态,以节省功耗。
134.步骤s202,wifi模块将第一socket信息发送给接入点设备。
135.wifi模块将第一socket信息发送给接入点设备之后,则可以进入低功耗状态,以节省功耗。
136.步骤s106,接入点设备在接收到第一socket信息之后,使用第一socket信息与服务器维持心跳。
137.本技术实施例提供的长连接方法,希望在终端设备进入低功耗状态之后,由接入点设备代理终端设备与服务器保持心跳,这样,终端设备的soc和wifi模块就不需要被频繁唤醒,从而实现降低终端设备在低功耗状态下的功耗的目的。可以理解的是,由于终端设备与服务器之间的心跳是基于socket信息进行的,因此,接入点设备要想成功与服务器建立心跳,就必须获得终端设备的tcp/ip协议栈中的socket信息,即第一socket信息。
138.具体实现中,接入点设备可以在一个定时器timer事件中向服务器发送心跳报文,也可以利用tcp的keepalive功能实现定时向服务器发送心跳报文。基于定时器timer事件或者keepalive功能,步骤s106如图14或15所示可以通过以下步骤s301-步骤s302实现:
139.步骤s301,接入点设备根据第一socket信息中的seq信息,确定心跳报文中的seq
的值。
140.具体实现中,接入点设备在接收到第一socket信息之后,可以将第一socket信息中的seq的值加1,作为向服务器发送的第一个心跳报文中的seq的值,将第一个心跳报文中的seq的值加1,作为第二个心跳报文中的seq的值,将第二个心跳报文中的seq的值加1,作为第三个心跳报文中的seq的值,以此类推。
141.示例地,当第一socket信息中的seq=a时,接入点设备可以确定第一个心跳报文中的seq=a 1,为便于描述,这里写作心跳报文(seq=a 1);当第一个心跳报文中的seq=a 1时,接入点设备可以确定第二个心跳报文中的seq=a 2,为便于描述,这里写作心跳报文(seq=a 2);当第二个心跳报文中的seq=a 2时,接入点设备可以确定第二个心跳报文中的seq=a 3,为便于描述,这里写作心跳报文(seq=a 3);以此类推。
142.步骤s302,接入点设备向服务器发送心跳报文。
143.如图14所示,接入点设备在接收到第一socket信息之后,可以设置一个定时器事件。定时器事件可以在接入点设备向服务器发送第一个心跳报文(seq=a 1)时开始倒计时(例如5分钟),在倒计时的过程中,接入点设备可以不断检测是否接收到服务器回应的确认报文(ack=a 2);如果接入点设备在倒计时结束时依然没有接收到服务器的确认报文(ack=a 2),接入点设备可以认为服务器已经离线,这时,接入点设备可以与服务器断开长连接;如果接入点设备在倒计时过程中接收到服务器的确认报文(ack=a 2),则接入点设备可以确定服务器在线,因此接入点设备可以继续代理终端设备与服务器维持长连接。进一步地,接入点设备会在倒计时结束时重置定时器事件,以继续向服务器发送下一个心跳报文(seq=a 2),并检测是否接收到确认报文(ack=a 3)。后续心跳过程以此类推。
144.如图15所示,接入点设备在接收到第一socket信息之后,可以开启tcp的keepalive功能,以向服务器发送心跳报文(seq=a 1);如果服务器接收到这个心跳报文(seq=a 1),会向接入点设备回复一个确认报文(ack=a 2),以告知自己的存在。如果接入点设备在一段时间(例如:2秒、4秒、8秒等)内没有接收到确认报文(ack=a 2),则会再次向服务器发送心跳报文(seq=a 1),经过几次重试之后,如果依然没有接收到确认报文(ack=a 2),接入点设备可以认为服务器已经离线,这时,接入点设备可以与服务器断开长连接。如果接入点设备接收到确认报文(ack=a 2),则接入点设备可以确定服务器在线,接入点设备可以继续代理终端设备与服务器维持长连接,并且,接入点会在一段预设时长(例如:5分钟)之后向服务器发送下一个心跳报文(seq=a 2)。后续心跳过程以此类推。
145.可以理解的是,在接入点设备代理终端设备与服务器维持心跳的期间,随着心跳报文和确认报文的收发,长连接的socket信息(例如:seq和ack)是不断变化的,并且socket信息由接入点设备代替终端设备来维护。本技术实施例中,为了将接入点设备维护的socket信息与终端设备维护的socket信息(例如:第一socket信息)进行区分,将接入点设备维护的socket信息称作第二socket信息。
146.本技术实施例提供的长连接方法的步骤s104-步骤s106中,接入点设备代理终端设备与服务器维持心跳,因此终端设备不需要在频繁唤醒soc和wifi模块,有利于降低终端设备的功耗。示例地,以心跳周期为3.5分钟计算,如果终端设备自己来维持与服务器的心跳,那么终端设备在一天内至少需要发送408次心跳报文,即唤醒soc和wifi模块408次,按照每次发送心跳报文消耗0.2毫安时(mah)的电量计算,终端设备每天消耗在发送心跳报文
的电量至少为0.2mah*408=87mah。由此可见,如果采用本技术实施例的长连接方法,终端设备每天至少可以减少87mah的电量消耗,有效地延长了终端设备的续航时间。
147.在一种实现方式中,接入点设备在成功代理终端设备与服务器之间的心跳之后,还可以将代理成功的消息发送给终端设备,使得终端设备在接收到代理成功的消息之后再进入到休眠状态。这一过程如图16所示可以包括步骤s401-步骤s403:
148.步骤s401,接入点设备在成功代理终端设备与服务器之间的心跳之后,将代理成功的消息发送给终端设备的wifi模块。
149.具体实现中,当接入点设备接收到服务器针对第一个心跳报文(seq=a 1)发送的确认报文((ack=a 2),即认为成功代理了终端设备与服务器之间的心跳,这时,接入点设备可以通过wifi链路将代理成功的消息发送给wifi模块。
150.步骤s402,wifi模块将代理成功的消息发送给终端设备的soc,然后进入低功耗状态。
151.具体实现中,wifi模块在执行了步骤s202,即:将第一socket信息发送给接入点设备之后,先不进入休眠状态,并且等待接入点设备的反馈。如果wifi模块接收到了接入点设备发送的代理成功的消息,则wifi模块可以首先将代理成功的消息转发给soc,然后进入到低功耗状态。
152.步骤s403,soc在接收到代理成功的消息之后,进入低功耗状态
153.具体实现中,soc在执行了步骤s201,即:将第一socket信息发送给wifi模块之后,先不进入休眠状态,并且等待wifi模块的反馈。如果soc接收到了wifi模块转发的代理成功的消息,则soc可以进入到低功耗状态。
154.在一种实现方式中,接入点设备在成功代理终端设备与服务器之间的心跳之后,还可以将其维护的第二socket信息同步给终端设备,使得终端设备与接入点设备的连接断开时,终端设备能够收回代理,根据第二socket信息继续向服务器发送心跳报文,以继续维持长连接。这一过程如图17所示可以包括步骤s501-步骤s503:
155.步骤s501,接入点设备将第二socket信息发送给终端设备的wifi模块。
156.示例地,接入点设备可以将第二socket信息放置在信标beacon帧中,从而通过beacon帧周期性地向终端设备的wifi模块发送第二socket信息。在电气电子工程师学会(institute of electrical and electronics engineers,ieee)的802.11协议中,beacon帧是一种设备之间的维护机制,beacon帧由接入点设备周期性地广播发送,以向其所及范围内的终端设备告知其存在。本技术实施例中,接入点设备可以按照802.11协议定义的周期(例如:100毫秒)发送beacon帧,也可以按照自定义的周期发送beacon帧。
157.示例地,接入点设备可以将第二socket信息放置在无数据null data帧中,并周期性地向终端设备的wifi模块发送null data帧,从而周期性地将第二socket信息发送给终端设备的wifi模块。在ieee的802.11协议中,null data帧是数据帧(data frame)中的一种,一般可以用于接入点设备反馈空数据或者维持wifi链路等。本技术实施例中,接入点设备可以按照自定义的周期(例如:100ms)向终端设备的wifi模块发送beacon帧。
158.步骤s502,当终端设备与接入点设备断开连接时,终端设备的soc从wifi模块获取第二socket信息。
159.具体实现中,wifi模块在接收到第二socket信息之后,可以将第二socket信息缓
存到自身的存储空间内,并且wifi模块每接收到一个新的socket信息,都会将其更新到存储空间内,从而使wifi模块缓存的第二socket信息可以始终与接入点设备维护的第二socket信息同步。当终端设备与接入点设备断开连接时,wifi模块可以唤醒soc;soc在被唤醒后,可以从wifi模块中提取第二socket信息,并将提取的第二socket信息更新到tcp/ip协议栈中,替换tcp/ip协议栈之前保存的第一socket信息。
160.本技术实施例中,终端设备与接入点设备断开连接可以至少包括以下两种情况:
161.第一种情况,如图18所示,当终端设备离开接入点设备覆盖范围701时,终端设备的wifi模块无法再发现接入点设备,因此终端设备与接入点设备会断开连接。
162.第二种情况,如图19所示,当接入点设备断电时,终端设备的wifi模块无法再发现接入点设备,因此终端设备与接入点设备会断开连接。
163.步骤s503,终端设备的soc根据第二socket信息向服务器发送心跳报文。
164.目前,终端设备可以一般通过至少一种连接方式连接到互联网,例如5g nr、lte和wifi局域网等。因此,在终端设备与接入点设备断开连接之后,如果终端设备还能够通过其他方式连接到互联网,则终端设备的soc还可以通过其他方式向服务器发送心跳报文。
165.示例地,假设终端设备同时连接到5g nr网络和wifi局域网,在终端设备与接入点设备断开连接之后,如果tcp/ip协议栈中更新后的第二socket信息包含seq=n,那么终端设备可以确定下一个心跳报文的seq=n 1,为便于描述,这里记作心跳报文(seq=n 1);然后,终端设备可以通过5g nr网络将心跳报文(seq=n 1)发送给服务器,以继续保持与服务器的长连接。
166.在一种实现方式中,在接入点设备成功代理终端设备与服务器之间的心跳之后,如果终端设备需要向服务器发送非心跳数据,终端设备可以从wifi模块提取中提取第二socket信息,根据第二socket信息向服务器发送非心跳数据。
167.以非心跳数据为终端设备的位置信息为例,在接入点设备成功代理终端设备与服务器之间的心跳之后,如果终端设备要向服务器发送位置信息,那么终端设备可以唤醒soc;soc在被唤醒后,可以从wifi模块中提取第二socket信息,并将提取的第二socket信息更新到tcp/ip协议栈中,替换tcp/ip协议栈之前保存的第一socket信息;然后,soc可以根据第二socket信息将位置信息发送给服务器。上述位置信息例如可以用于服务器向终端设备提供基于位置的服务(location-based service,lbs)等。
168.另外,在终端设备向服务器发送非心跳数据期间,接入点设备可以暂停向服务器发送心跳报文。在终端设备向服务器发送非心跳数据结束之后,终端设备可以重新执行步骤s104-步骤s105,将tcp/ip协议栈中最新的socket信息发送给接入点设备,使接入点设备继续代理终端设备与服务器维持心跳,而终端设备则可以继续进入低功耗状态,以降低功耗。
169.本技术实施例提供的长连接方法的结束代理阶段如图20所示可以包括步骤s107-s108。
170.步骤s107,终端设备结束低功耗状态时,soc从wifi模块中获取第二socket信息。
171.终端设备结束低功耗状态的行为可以发生在以下场景中,例如:终端设备解锁时,可以结束低功耗状态,其中,终端设备的解锁方式可以包括锁屏密码解锁、面容识别解锁、指纹解锁、虹膜解锁等;又例如,终端设备充电时,可以结束低功耗状态。
172.具体实现中,当终端设备结束低功耗状态时,终端设备的soc在可以从wifi模块中提取第二socket信息,并将提取的第二socket信息更新到tcp/ip协议栈中,替换tcp/ip协议栈之前保存的第一socket信息。
173.另外,当终端设备结束低功耗状态时,终端设备可以将结束低功耗状态的消息通知给接入点设备。接入点设备在得知终端设备结束低功耗状态之后,可以停止代理终端设备向服务器发送心跳报文,同时停止向终端设备的wifi模块发送第二socket信息。
174.步骤s108,soc根据第二socket信息向服务器发送心跳报文。
175.具体实现中,终端设备可以通过wifi链路将心跳报文发送给接入点设备,由接入点设备根据路由表将心跳报文转发给服务器。由此可见,在终端设备结束低功耗状态之后,接入点设备恢复到了正常的转发数据的功能,后续终端设备和接入点设备之间的数据交互都通过接入点设备的转发实现。
176.由以上技术方案可知,本技术实施例提供的长连接方法,接入点设备能够在终端设备处于低功耗状态期间,代理终端设备与服务器保持心跳,使得终端设备在低功耗状态期间不需要为了发送心跳报文而频繁地唤醒soc和wifi模块,由此降低了终端设备的功耗,延长了终端设备的续航时间。
177.下面结合一些具体的场景对本技术实施例的技术方案进行进一步的解释说明。
178.在一个实施例中,当终端设备101接入到路由设备202的wifi网络时,路由设备202可以在终端设备101锁屏后代理终端设备101向服务器发送心跳报文。
179.如图21所示,当用户位于室外时,终端设备101可能搜寻不到已知的wifi网络,例如搜寻不到家中或者公司等路由设备202的wifi网络,这时,如果终端设备101启用了数据网络,终端设备101会连接到附近的移动运营商的基站201,通过运营商的基站201接入到互联网。通常,终端设备101中会安装有一个或者多个应用程序app,这些app有些是预装在终端设备101中,有些是用户从终端设备101的应用商店下载安装的。当终端设备101接收到用户启动某个app的操作时,例如启动一款社交软件客户端302时,终端设备101会与社交软件服务器301建立连接,终端设备101与社交软件服务器301之间传输的报文由基站201进行转发。当社交软件客户端302在终端设备101的系统前台运行时,用户可以在社交软件客户端302的用户界面内执行点击、划动等操作,以浏览好友列表、打开聊天界面、输入和发送聊天内容,查看朋友圈等,在这种情况下,终端设备101与社交软件服务器301之间会产生数据传输。
180.当用户使用社交软件客户端302与好友聊天结束之后,如果用户不想在终端设备101上进行其他操作,用户可以按下终端设备101的锁屏键,终端设备101接收到用户按下锁屏键的操作时,终端设备锁屏(如图6所示);如果用户还想在终端设备101上进行其他操作,用户可以将社交软件客户端302切换到系统后台;当终端设备101处在锁屏状态或者社交软件客户端302位于系统后台时,如果没有好友向用户发送聊天消息,并且社交软件服务器301也没有其他需要推送给社交软件客户端302的消息,那么社交软件客户端302与社交软件服务器301之间就不再有数据传输。
181.通常,在终端设备101与社交软件服务器301建立有长连接的状态下,终端设备101的tcp/ip协议栈中会维护有这个长连接的第一socket信息。当终端设备101与社交软件服务器301之间没有数据传输时,终端设备101可以根据第一socket信息定期向社交软件服务
器301发送心跳报文,以向社交软件服务器301告知终端设备101的存在。在图21示出的场景中,终端设备101的心跳报文会通过基站201发送给社交软件服务器301,基站201起到转发心跳报文的作用。
182.进一步如图22和23所示,当用户从室外回到室内(例如:家中、办公室等),终端设备101可以搜寻到已知的wifi网络,那么终端设备101会连接到相应的路由设备202,通过路由设备202接入到互联网,终端设备101与社交软件服务器301之间传输的报文由路由设备202进行转发。可以理解的是,终端设备101与路由设备202建立连接时可能是锁屏状态(如图22),也可能是解锁状态(如图23)。
183.如果终端设备101与路由设备202建立连接时是锁屏状态,如图22所示,那么终端设备101可以将第一socket信息发送给路由设备202。路由设备202在接收到第一socket信息之后,根据第一socket信息代理终端设备101向社交软件服务器301发送心跳报文,这样,终端设备101在锁屏状态下就不需要定期唤醒向社交软件服务器301发送心跳报文。
184.示例地,用户在从室外回到家的路途中使用社交软件客户端302与好友聊天,在快到家时,用户结束聊天,终端设备101锁屏,终端设备101在锁屏后即进入低功耗状态;用户进入家门之后,终端设备101在锁屏状态下与用户家中的路由设备202建立连接;在终端设备101成功与路由设备202建立连接之后,终端设备101将长连接的第一socket信息发送给路由设备202,然后继续保持低功耗状态;路由设备202接收到第一socket信息之后,根据第一socket信息代理终端设备101向社交软件服务器301发送心跳报文,从而维持长连接。
185.如果终端设备101与路由设备202建立连接时是解锁状态,如图23所示,那么终端设备101与路由设备202建立连接之后不会立刻将第一socket信息发送给路由设备202,而是会等到终端设备101锁屏之后,再将第一socket信息发送给路由设备202。
186.示例地,用户在从室外回到家的路途中使用社交软件客户端302与好友聊天,在快到家时,用户结束聊天,将社交软件客户端302切换到系统后台并继续使用终端设备101,终端设备101保持解锁状态;用户进入家门之后,终端设备101在解锁状态下与用户家中的路由设备202建立连接;在终端设备101成功与路由设备202建立连接之后,由于终端设备101为解锁状态,终端设备101不会立即将第一socket信息发送给路由设备202,而是继续亲自向社交软件服务器301发送心跳报文,路由设备202此时起到转发心跳报文的作用。在这之后,如果终端设备101锁屏,则满足图22的场景,那么终端设备101会首先将第一socket信息发送给路由设备202,然后进入到低功耗状态。路由设备202在接收到第一socket信息之后,根据第一socket信息代理终端设备101向社交软件服务器301发送心跳报文,这样,终端设备101在锁屏状态下就不需要定期唤醒向社交软件服务器301发送心跳报文,从而降低了功耗。
187.在路由设备202代理终端设备101向社交软件服务器301发送心跳报文期间,路由设备202和终端设备101的wifi模块可以通过beacon帧和null data帧进行通信。例如,路由设备202可以将其在代理终端设备101发送心跳期间维护的第二socket信息周期性地通过beacon帧和null data帧发送给终端设备101的wifi模块,使第二socket信息备份保存在wifi模块中。这样,如果终端设备101在锁屏期间与路由设备202断开连接,终端设备101可以收回路由设备202发送心跳报文的功能,具体来说:终端设备101从wifi模块中获取第二socket信息,并且使用第二socket信息向社交软件服务器301发送心跳报文,从而继续维持
长连接。
188.示例地,如图24所示,在终端设备101锁屏期间,如果用户离开家来到户外,超出了路由设备202的信号覆盖范围,则导致终端设备101和路由器断开连接;这时,终端设备101可以从wifi模块中获取其备份的第二socket信息,将第二socket信息保存到自身的tcp/ip协议栈中;终端设备101在与路由器断开之后,会与基站201建立数据连接,因此终端设备101可以根据第二socket信息,通过基站201向社交软件服务器301发送心跳报文,以继续维持终端设备101与社交软件服务器301的长连接,基站201这时起到转发心跳报文的作用。
189.另外,在终端设备101锁屏之后,如果终端设备101接收到用户的解锁操作,那么终端设备会解锁,并且可以收回路由设备202发送心跳报文的功能。示例地,如果用户回到家里之后,还想继续使用社交软件客户端302与好友聊天,那么用户会通过指纹解锁、密码解锁、面部解锁或者手势解锁等方式解锁手机;终端设备101在解锁之后,可以从wifi模块中获取其备份的第二socket信息,将第二socket信息保存到自身的tcp/ip协议栈中;这样,终端设备101就可以根据第二socket信息向社交软件服务器301发送心跳报文,以继续维持长连接,路由设备202这时起到转发心跳报文的作用。
190.在另一个实施例中,当终端设备101接入到路由设备202的wifi网络时,路由设备202可以在终端设备101电量不足时代理终端设备101向服务器发送心跳报文。
191.如图25所示,用户打开社交软件客户端302给好友发消息邀请一起玩游戏,好友回复消息表示同意一起游戏之后,用户将社交软件客户端302切换到系统后台运行,然后打开游戏客户端。在这之后,如果没有好友向用户发送聊天消息,并且社交软件服务器301也没有其他需要推送给社交软件客户端302的消息,那么社交软件客户端302与社交软件服务器301之间就不会有数据传输,因此,终端设备101需要向社交软件服务器301发送心跳报文以维持与社交软件服务器301的长连接。当终端设备101的电量高于一个阈值,例如高于20%时,终端设备101为非低功耗状态,终端设备101亲自发送心跳报文,路由设备202此时只起到转发心跳报文的作用。当终端设备101的电量低于一个阈值,例如低于20%时,终端设备101可以进入低功耗状态,终端设备101将长连接的第一socket信息发送给路由设备202;路由设备202在接收到第一socket信息之后,根据第一socket信息代理终端设备101向社交软件服务器301发送心跳报文,这样,终端设备101在锁屏状态下就不需要定期向社交软件服务器301发送心跳报文,从而降低了功耗。
192.在路由设备202代理终端设备101向服务器发送心跳报文期间,路由设备202可以将其在代理终端设备101发送心跳期间维护的第二socket信息周期性地通过beacon帧和null data帧发送给终端设备101的wifi模块,使第二socket信息备份保存在wifi模块中。
193.接下来,当用户在游戏过程中发现终端设备101电量不足时,可以为终端设备101插上数据线进行充电。终端设备101在检测到充电时,可以结束低功耗状态,从wifi模块中获取其备份的第二socket信息,将第二socket信息保存到自身的tcp/ip协议栈中,这样,终端设备101可以根据第二socket信息,通过路由设备202向社交软件服务器301发送心跳报文,以继续维持终端设备101与社交软件服务器301的长连接,此时,路由设备202不再代理终端设备101向社交软件服务器301发送报文,而是起到转发心跳报文的作用。
194.另外,在用户游戏过程中,如果终端设备101与路由设备202断开了连接(例如:终端设备101断电或者用户外出),那么终端设备101也会从wifi模块中获取其备份的第二
socket信息,将第二socket信息保存到自身的tcp/ip协议栈中,这样,终端设备101可以根据第二socket信息,通过其接入的基站201向社交软件服务器301发送心跳报文,以继续维持终端设备101与社交软件服务器301的长连接。
195.上述本技术提供的实施例中,分别从设备或装置本身、以及从设备或装置之间交互的角度对本技术提供的长连接方法的各方案进行了介绍。可以理解的是,各个设备或装置,例如上述终端设备和接入点设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
196.图26是本技术实施例提供的一种长连接装置的结构示意图。在一个实施例中,终端设备可以通过图26所示的硬件装置实现相应的功能。如图26所示,该长连接装置可以包括:收发器801、存储器802和处理器803。
197.在一个实施例中,处理器803可以包括一个或多个处理单元,例如:处理器803可以包括应用处理器,调制解调处理器,图形处理器,图像信号处理器,控制器,视频编解码器,数字信号处理器,基带处理器,和/或神经网络处理器等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。存储器802与处理器803耦合,用于存储各种软件程序和/或多组指令。在一些实施例中,存储器802可包括易失性存储器和/或非易失性存储器。收发器801为例如可以包括射频电路,移动通信模块,无线通信模块等,用于实现终端设备的无线通信功能。
198.当存储器802中的软件程序和/或多组指令被处理器803运行时,使得终端设备用于执行如下方法步骤:在解锁状态下,根据第一socket信息向第一app所关联的服务器发送心跳报文,心跳报文通过第一接入点设备转发给服务器,其中,心跳报文用于终端设备与服务器维持长连接,第一socket信息为终端设备与服务器维持长连接所需要的数据;从解锁状态切换到锁屏状态时,将第一socket信息发送给第一接入点设备,以使得第一接入点设备根据第一socket信息代理终端设备向服务器发送心跳报文。
199.在一个实施例中,存储器802中的软件程序和/或多组指令还使得终端设备执行如下方法步骤:通过wifi模块接收接入点设备发送的第二socket信息,以及将第二socket信息保存在wifi模块中,第二socket信息为第一接入点设备在代理终端设备向服务器发送心跳报文期间生成的用于维持长连接的数据。
200.在一个实施例中,存储器802中的软件程序和/或多组指令还使得终端设备执行如下方法步骤:在锁屏状态下与第一接入点设备断开连接时,连接到第二接入点设备,以及,根据第二socket信息向服务器发送心跳报文,心跳报文通过第二接入点设备转发给服务器。
201.在一个实施例中,存储器802中的软件程序和/或多组指令还使得终端设备执行如下方法步骤:从锁屏状态进入到解锁状态时,根据第二socket信息向服务器发送心跳报文,心跳报文通过第一接入点设备转发给服务器。
202.在一个实施例中,存储器802中的软件程序和/或多组指令还使得终端设备执行如
下方法步骤:在解锁状态下进入到低功耗状态时,将第一socket信息发送给第一接入点设备,以使第一接入点设备根据第一socket信息代理终端设备向服务器发送心跳报文。
203.在一个实施例中,存储器802中的软件程序和/或多组指令还使得终端设备执行如下方法步骤:在解锁状态下结束低功耗状态时,根据第二socket信息向服务器发送心跳报文,心跳报文通过第一接入点设备转发给服务器。
204.根据上述装置,接入点设备能够在终端设备处于低功耗状态期间,代理终端设备与服务器保持心跳,使得终端设备在低功耗状态期间不需要为了发送心跳报文而频繁地唤醒soc和wifi模块,由此降低了终端设备的功耗,延长了终端设备的续航时间。
205.在一个实施例中,接入点设备可以通过图26所示的硬件装置实现相应的功能。
206.在一个实施例中,处理器803可以包括一个或者多个处理单元,例如中央处理器、微控制器、存储控制器等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中,例如集成在系统芯片中。存储器802与处理器803耦合,用于存储各种软件程序和/或多组指令。存储器802可以包括一个或者多个存储单元,例如可以包括易失性存储器和/或非易失性存储器。其中,不同的存储单元可以是独立的器件,也可以集成或者封装在一个或者多个处理器中,成为处理器的一部分。收发器801例如可以包括射频电路、天线和基带电路。其中,收发器可以是独立的器件,也可以部分或者全部地集成或者封装在处理器中,成为处理器的一部分。
207.当存储器802中的软件程序和/或多组指令被处理器803运行时,使得接入点设备用于执行如下方法步骤:接收终端设备发送的第一socket信息,其中,第一socket信息是终端设备从解锁状态切换到锁屏状态时发送的,第一socket信息为终端设备与服务器维持长连接所需要的数据;根据第一socket信息代理终端设备向服务器发送心跳报文,心跳报文用于终端设备与服务器维持长连接。
208.在一个实施例中,存储器802中的软件程序和/或多组指令还使得接入点设备执行如下方法步骤:在代理终端设备向服务器发送心跳报文期间,向终端设备发送第二socket信息,第二socket信息为第一接入点设备在代理终端设备向服务器发送心跳报文期间生成的用于维持长连接的数据。
209.在一个实施例中,存储器802中的软件程序和/或多组指令还使得接入点设备执行如下方法步骤:在代理终端设备向服务器发送心跳报文期间,周期性地向终端设备发送信标beacon帧和/或无数据null data帧,beacon帧和/或null data帧包含第二socket信息。
210.在一个实施例中,存储器802中的软件程序和/或多组指令还使得接入点设备执行如下方法步骤:在接收到来自终端设备的心跳报文之后,停止代理终端设备向服务器发送心跳报文。
211.根据上述装置,接入点设备能够在终端设备处于低功耗状态期间,代理终端设备与服务器保持心跳,使得终端设备在低功耗状态期间不需要为了发送心跳报文而频繁地唤醒soc和wifi模块,由此降低了终端设备的功耗,延长了终端设备的续航时间。
212.在另一个实施例中,终端设备可以通过图27所示的软件模块实现相应的功能。如图27所示,用于实现终端设备功能的长连接装置可以包括:socket信息获取模块901,用于从自身的tcp/ip协议栈中获取长连接的第一套接字socket信息;socket信息发送模块902,用于将第一socket信息发送给接入点设备,以使得接入点设备根据第一socket信息向服务
器发送心跳报文,以维持长连接。
213.在另一个实施例中,接入点设备可以通过图28所示的软件模块实现相应的功能。如图28所示,用于实现接入点设备功能的长连接装置可以包括:socket信息接收模块904,用于接收终端设备发送的第一socket信息,第一socket信息是终端设备在与服务器建立有长连接的情况下,从自身的tcp/ip协议栈中获取的;心跳报文发送模块904,用于根据第一socket信息向服务器发送心跳报文。
214.本技术实施例还提供了一种网络系统,如图1所示,该网络系统包括:终端设备100、接入点设备200和服务器300。终端设备100通过接入点设备200与服务器300建立长连接;终端设备100,用于从自身的tcp/ip协议栈中获取长连接的第一套接字socket信息;终端设备100,还用于将第一socket信息发送给接入点设备200;接入点设备200,用于根据第一socket信息向服务器300发送心跳报文。
215.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
216.本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。
217.本技术实施例还提供了一种芯片系统,图29为该芯片系统的结构示意图。该芯片系统包括处理器1001,用于支持上述装置实现上述方面中所涉及的功能,例如,生成或处理上述方法中所涉及的信息。在一种可能的设计中,芯片系统还包括存储器1002,用于保存长连接装置必要的计算机指令1003和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
218.以上的具体实施方式,对本技术实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本技术实施例的具体实施方式而已,并不用于限定本技术实施例的保护范围,凡在本技术实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本技术实施例的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献