CN112822090B - 一种适用于移动终端的即时通信工具的通信方法、装置和系统 - Google Patents
一种适用于移动终端的即时通信工具的通信方法、装置和系统 Download PDFInfo
- Publication number
- CN112822090B CN112822090B CN201911121889.8A CN201911121889A CN112822090B CN 112822090 B CN112822090 B CN 112822090B CN 201911121889 A CN201911121889 A CN 201911121889A CN 112822090 B CN112822090 B CN 112822090B
- Authority
- CN
- China
- Prior art keywords
- data packet
- value
- header
- instant messaging
- protocol
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种适用于移动终端的即时通信工具的通信方法、装置和系统。本发明的方法包括:构建私有定制化二进制协议,所述私有定制化二进制协议的数据包结构包括数据包类型、数据包头和数据包体;其中,所述数据包类型用于指示所述数据包的类型,所述数据包类型包括多个值,每个值对应所述即时通信工具的一个业务场景,所述数据包头携带所述数据包的控制信息,所述数据包体用于携带所述数据包的数据内容;利用所述私有定制化二进制协议实现所述即时通信工具在移动终端与即时通信平台之间的即时通信。本发明构建的协议具有协议载体小、协议解析效高的优势,尤为适用移动终端的即时通信工具。
Description
技术领域
本发明涉及一种适用于移动终端的即时通信工具的通信方法、装置和系统。
背景技术
即时通信(Instant Message,IM)工具是一种网络用户不可缺少的通信工具。当前的即时通信工具较常见的通信协议有SIP(Session Initiation Protocol,会话初始协议)、XMPP(Extensible Messaging and Presence Protocol,可扩展消息与存在协议)、SyncML(Synchronization Markup Language,信息同步标准协议)、MQTT(Message QueuingTelemetry Transport,消息队列遥测传输协议)等。
其中,上述各种通信协议基本情况如下:
SIP:一般网络电话业务会选择该协议完成业务。该协议定义了发起呼叫,对方振铃,开始接听,会话建立等诸多流程。缺点是:SIP协议是文本协议,协议数据包容量较大,协议业务交互流程复杂,会产生大量的流量消耗,同时也会带来较大的电量消耗,移动终端APP受到的影响尤为重要。
XMPP:XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性,业界使用很广的协议,有大量的开源实现,能帮助快速的开发高质量的应用。缺点:这个协议因为是基于XML的,所以对于流量损耗和网络带宽的要求比较高,可适用于PC电脑的上IM应用,但对流量和电量消息都有严格要求的移动终端则不太适合。
SYNCML:一个简单、通用的可以用于工业界方面的数据同步协议,使用了该款协议的有邮箱系统FOXMAIL,对于多设备同时使用,能给与很好的支持。缺点:协议本身比较复杂,交互流程比较多,用户流量消耗比较大,不适合对流量和电量要求较高的移动终端使用。
MQTT:IBM公司提出一种轻量级的,适合于低带宽、不可靠连接、嵌入式设备、CPU、内存资源紧张,适用于各种受限的环境的传输协议,最早使用于心脏起搏器的质量状态监控上,有明确定义服务质量,对于不同的质量有不同交互流程要求。缺点:协议本身不是基于IM业务设计的,对于字节定义缺乏可扩展性,有时需要在产品需求和标准协议实现上做出一些权衡。
基于上述对现有通信协议的缺点描述,如何选择适合的通信协议来满足应用于移动终端上的IM产品功能要求、性能、耗电、流量等多方面的要求是我们需要面对的问题。
发明内容
本发明提供了一种适用于移动终端的即时通信工具的通信方法、装置和系统,以提供适用于移动终端的即时通信工具对产品功能要求、性能、耗电、流量等多方面的要求。
第一方面,本发明提供了一种适用于移动终端的即时通信工具的通信方法,包括:
构建私有定制化二进制协议,所述私有定制化二进制协议的数据包结构包括数据包类型、数据包头和数据包体;其中,所述数据包类型用于指示所述数据包的类型,所述数据包类型包括多个值,每个值对应所述即时通信工具的一个业务场景,所述数据包头携带所述数据包的控制信息,所述数据包体用于携带所述数据包的数据内容;
利用所述私有定制化二进制协议实现所述即时通信工具在移动终端与即时通信平台之间的即时通信。
第二方面,本发明提供了一种适用于移动终端的即时通信工具的通信装置,包括:
协议构建单元,构建私有定制化二进制协议,所述私有定制化二进制协议的数据包结构包括数据包类型、数据包头和数据包体;其中,所述数据包类型用于指示所述数据包的类型,所述数据包类型包括多个值,每个值对应所述即时通信工具的一个业务场景,所述数据包头携带所述数据包的控制信息,所述数据包体用于携带所述数据包的数据内容;
数据通信单元,利用所述私有定制化二进制协议实现所述即时通信工具在移动终端与即时通信平台之间的即时通信。
第三方面,本发明提供了一种适用于移动终端的即时通信工具的通信系统,包括:包括处理器和存储器;存储器,存储计算机可执行指令;处理器,所述计算机可执行指令在被执行时使处理器执行通信方法。
第四方面,本发明提供了一种计算机可读存储介质,计算机可读存储介质上存储有一个或多个计算机程序,一个或多个计算机程序被执行时实现通信方法。
本发明至少取得以下技术效果:
其一,本申请通过将二进制数据作为私有定制化二进制协议的数据结构,将数据包的大小尽可能的压缩,大大节省移动终端与即时通信平台之间通信流量的消耗;
其二,基于二进制数据的私有定制化二进制协议,在进行序列化和反序列效率最高,能够降低终端、平台的性能消耗;
其三,通过采用数据包类型、数据包头和数据包体结合的方式来构建信令数据包,通过在数据包类型、数据包头中预留标识位使协议本身的扩展性更好;
其四,通过设置数据包类型、数据包头的取值可以极大丰富的各种应用场景和业务场景,能够较为灵活方便接入网关路由逻辑。
附图说明
图1为本发明实施例示出的适用于移动终端的即时通信工具的通信方法流程图;
图2为本发明实施例示出的移动终端与即时通信平台之间的通信示意图;
图3为本发明实施例示出的适用于移动终端的即时通信工具的通信装置的结构框图;
图4为本发明实施例示出的适用于移动终端的即时通信工具的通信系统的结构示意图。
具体实施方式
本发明实施例提供一种适用于移动终端的即时通信工具的通信方法,基于移动终端对流量与电量要求较高的情况,定制化设计一种协议解析高效、协议载体小、易于扩展的二进制通信协议,使即时通信工具选择私有定制化二进制协议实现移动终端与即时通信平台之间的通信交互。本发明实施例还提供了相应的装置、系统和计算机可读存储介质,以下分别进行详细说明。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本发明的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本发明的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本发明的上下文中,计算机可读存储介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
本发明提供一种适用于移动终端的即时通信工具的通信方法。
图1为本发明实施例示出的适用于移动终端的即时通信工具的通信方法流程图,如图1所示,本实施例的方法包括:
S110,构建私有定制化二进制协议,所述私有定制化二进制协议的数据包结构包括数据包类型标识、数据包头和数据包体;其中,所述数据包类型用于指示所述数据包的类型,所述数据包类型包括多个值,每个值对应所述即时通信工具的一个业务场景,所述数据包头携带所述数据包的控制信息,所述数据包体用于携带所述数据包的数据内容。
本实施例部署的数据包类型与数据包头的值均可扩展,且所述数据包类型的值与所述数据包头的值满足取值约束条件。
S120,利用所述私有定制化二进制协议实现所述即时通信工具在移动终端与即时通信平台之间的即时通信。
本实施例通过构建私有定制化二进制协议,基于该私有定制化二进制协议实现即时通信工具在移动终端与即时通信平台之间的即时通信,基于该私有定制化二进制协议为二进制协议的特点,因而该协议具有协议载体小、协议解析效高的优势,当即时通信工具应用于移动终端时,消耗移动终端的电量与流量均较小,且由于该私有定制化二进制协议的数据包类型的每个值对对应即时通信工具的一个业务场景,不但可以通过对数据包类型赋值实现数据包类型的扩展,还可以精确定义即使通信工具的每个业务场景,无需在产品需求与协议标准之间做出权衡。
本实施例中,私有定制化二进制协议的数据包结构包括数据包类型Method、数据包头Header和数据包体Body,还包括数据包结束标志位End Symbol,私有定制化二进制协议的数据包结构的组成如表1所示。
表1
Method ID or Response Code |
Header[Head ID,Head Length,Head Value] |
Header[Head ID,Head Length,Head Value] |
Header[Head ID,Head Length,Head Value] |
Header[Head ID,Head Length,Head Value] |
Body[Body Symbol,Body Length,Body Value] |
Body[Body Symbol,Body Length,Body Value] |
Body[Body Symbol,Body Length,Body Value] |
ES[End Symbol] |
即完整私有定制化二进制协议的数据包结构如下表2所示:
表2
下面结合上述表1-2,对本申请中的私有定制化二进制协议的数据包结构包括的数据包类型、数据包头、数据包体和数据包结束标志位进行详细说明。
1.对于数据包类型
所述数据包类型对应的字段占用一个字节,所述字节的最高位取值为0或1,用于指示所述数据包类型为请求数据包或应答数据包,所述字节的其他位的取值满足第一取值约束条件和第二取值约束条件,所述第一取值约束条件用于在对应为请求数据包的所述字节的二进制取值范围内利用每个数值唯一区分每个业务场景,所述第二取值约束条件用于在对应为应答数据包的所述字节的二进制取值范围内利用每个数值唯一区分每个业务场景。其中,数据包类型的结构如表3所示:
表3
基于表3的示例,Method占用1个Byte。Bit7取值0,1分别表示数据包表示为请求数据包还是应答数据包;当Bit取值为0时表示请求数据包,此时Bit0-Bit6为Method取值范围为1-7F(1-127),当Bit取值为1时表示为应答数据包,此时Bit0-Bit6为应答状态码取值范围为0-7E(0-126)。
其中,在一个具体实施例中,所述第一取值约束条件包括:
利用十六进制数值0x01表示服务业务Service
利用十六进制数值0x02表示消息业务Message;
利用十六进制数值0x03表示回复业务Reply;
利用十六进制数值0x04表示阅读回复业务ReadReply;
利用十六进制数值0x05表示心跳保活业务KeepAlive;
利用十六进制数值0x07表示注册业务Logon;
利用十六进制数值0x0A表示通知业务Notify;
利用十六进制数值0x0B表示询问业务Ask;
利用十六进制数值0x0 C表示正在输入业务Typing;
利用十六进制数值0x0 F表示获取业务Take;
利用十六进制数值0x10表示群业务Group;
利用十六进制数值0x11表示群消息业务GroupMessage;
利用十六进制数值0x15表示数据业务Data;
利用十六进制数值0x17表示验证业务Verify;
利用十六进制数值0x19表示报告业务Report;
利用十六进制数值0x1A表示通讯录业务PhoneBook;
利用十六进制数值0x1B表示表情业务Emoticon;
利用十六进制数值0x1C表示视频业务Video。
即在上述具体实施例中,第一取值约束条件的表格形式如表4所示。
表4
Service=(byte)0x01; | Take=(byte)0x0F; |
Message=(byte)0x02; | Group=(byte)0x10; |
Reply=(byte)0x03; | GroupMessage=(byte)0x11; |
ReadReply=(byte)0x04; | Data=(byte)0x15; |
KeepAlive=(byte)0x05; | Verify=(byte)0x17; |
Logon=(byte)0x07; | Report=(byte)0x19; |
Notify=(byte)0x0A; | PhoneBook=(byte)0x1A; |
Ask=(byte)0x0B; | Emoticon=(byte)0x1B; |
Typing=(byte)0x0C; | Video=(byte)0x1C; |
在一个具体实施例中,所述第二取值约束条件包括:
利用十进制数值80表示业务成功OK;
利用十进制数值81表示业务不可使用Not Available;
利用十进制数值82表示业务处理失败Error;
利用十进制数值83表示业务繁忙Busy;
利用十进制数值84表示用户或业务不存在Not Exis;
利用十进制数值120表示业务正在重试Trying;
利用十进制数值121表示业务正在处理中Processing。
2.对于数据包头
所述数据包头包括头标识字段、头长度字段和头值字段三部分,所述头标识字段和所述头长度字段分别占用一个字节,所述头值字段的占用所述头长度字段指示的字节数,所述头值字段的取值满足第三取值约束条件,所述第三取值约束条件用于在所述字节数的二进制取值范围内利用每个数值唯一区分每个控制信息。其中,数据包类型的结构如表5所示:
表5
基于表5的示例,数据包头Head由数据包头的标识Head ID、数据包头的长度HeadLeangth、数据包头的取值Head Value三部分组成;其中,Head ID用Byte 0来进行描述,Byte1用来描述Head Length,Byte2到Byte Head Leangth来描述Head Value。
例如,在一个示例中,十进制13900109999转换为十六进制为033C82D8AF,在信令中为:
From[Length:5]=AF D8 82 3C 03
Head ID:From
Head Length:5
Head Value:AF D8 82 3C 03
其中,在一个具体实施例中,所述第三取值约束条件包括:
利用十进制数值1表示业务信令发起方From;
利用十进制数值2表示业务信令接收方To;
利用十进制数值3表示业务信令中会话标识CallId;
利用十进制数值4表示会话事务中的序列号Csequence;
利用十进制数值5表示消息唯一标识MessageID;
利用十进制数值6表示信令发送时间DateTime;
利用十进制数值7表示令牌Token;
利用十进制数值8表示密码Password;
利用十进制数值9表示身份凭证Credential;
利用十进制数值10表示类型Type;
利用十进制数值11表示手机号码MobileNo;
利用十进制数值12表示过期事件Expire;
利用十进制数值13表示事件Event;
利用十进制数值14表示路由Route;
利用十进制数值15表示记录路由RecordRoute;
利用十进制数值16表示推送凭证PushToken;
利用十进制数值18表示秘钥Key;
利用十进制数值19表示状态Status;
利用十进制数值20表示设备凭证DeviceToken;
利用十进制数值20表示版本号Version;
利用十进制数值22表示用户索引Index;
利用十进制数值23表示名称Name;
利用十进制数值24表示版本控制SubVersion;
利用十进制数值25表示邮件Email;
利用十进制数值26表示语言Language;
利用十进制数值27表示容量Capacity;
利用十进制数值28表示加密Encrypt;
利用十进制数值-16表示签名秘钥SignKey;
利用十进制数值-17表示计数表TableCount;
利用十进制数值-31表示文件大小上限FileMaxSize;
利用十进制数值-30表示消息长度上限MessageMaxLen;利用十进制数值-29表示原旗ProtoFlag;
利用十进制数值32表示通道标识Channel_ID;
利用十进制数值33表示应用类型AppType;
利用十进制数值70表示头像识别PortraitId;
利用十进制数值-7表示子进程Fpid;
利用十进制数值-6表示标签标识Tpid;
利用十进制数值-5表示服务数据ServerData;
利用十进制数值-4表示服务器Pid ServerPid;
利用十进制数值-3表示服务器秘钥ServerKey;
利用十进制数值-2表示未知事件Unknown;
利用十进制数值-1表示报文数据Body。
3.对于数据包体
数据包体Body用于携带所述数据包的数据内容,其结构如表6所示:
表6
基于表6的示例,数据包体Body由数据包体标识Body Symbol、数据包体长度BodyLength、数据包取值Body Value三部分组成;其中,Body Symbol用Byte 0来进行描述,Byte1用来描述BodyLength,Byte2到Byte BodyLeangth来描述BodyValue。
4.对于数据包结束标志位
参考表2,数据包结束标志位End Symbol占用1Byte空间,取值为value[00],表示一个信令数据包的结束。
基于上述四个步骤即可构建好构建私有定制化二进制协议的数据包,进而可以利用私有定制化二进制协议实现所述即时通信工具在移动终端与即时通信平台之间的即时通信,具体是:即时通信工具在所述移动终端上发起交互信令时,利用部署在所述移动终端上的协议栈基于所述私有定制化二进制协议生成所述交互信令的数据包,并将所述数据包发送给所述即时通信平台之间的接入网关,所述接入网关基于所述私有定制化二进制协议解析所述数据包。
下面结合上述表1-6的数据结构和取值约束条件,并参考图2所示,以三个业务场景为例说明构建每个业务场景对应的交互信令数据包的过程。
消息业务示例:
1.移动终端上的即时通信工具在发起一个与服务端的交互信令时,首选根据具体的业务场景选择对应的Method,对Method区域进行设置,例如:如果是消息业务,则Method为Message,表示此信令为客户端发送消息到平台的信令。设置规则要求可参考表3的约束和第一取值约束条件中关于Message的约束。
2.协议载体的Method部分构造完成后,设置From Header,Header头类型为From,内容为用户的Userid。From头表示业务由谁发起,Header内容中的Userid表示为业务的发起者的用户ID。设置规则可参考表5所示的约束和第三取值约束条件中关于From的约束。
3.设置To Header,Header头类型为To,内容为UserId。To头表示信令发送给谁,Header内容中的Userid表示为信令接受者的用户ID。设置规则可参考表5所示的约束和第三取值约束条件中关于To的约束。
4.设置MessageId Header,Header头类型为MessageId,内容为UUID,用以表示消息的唯一标识。
5.协议载体的Header部分构造完成后,设置Body,Body也是一种特殊的Header,Header头类型为Body,内容为发送消息的内容,设置规则可参考表5所示的约束和第三取值约束条件中关于Body的约束。
6.设置End Symbol占用1Byte空间,取值为value[00],表示一个信令数据包的结束。
此时,基于消息业务的信令数据包已经构造完成,通过移动终端与即时通信平台的tcp长连接通道,可将信令数据包发送至即时通信平台的接入网关(CenterofMessageProxy,CMP),由CMP接收并解析数据包。
登录业务示例
1.构建协议载体的Method部分,登录业务使用的Method为Logon,表示本次数据交互的信令为登录信令。设置规则要求可参考表3所示的约束和第一取值约束条件中关于Logon的约束。
2.协议载体的Method部分构造完成后,设置From Header,Header头类型为From,内容为用户的Userid。From头表示业务由谁发起,Header内容中的Userid表示为业务的发起者的用户ID。设置规则可参考表5所示的约束和第三取值约束条件中关于From的约束。
3.设置Lanuage Header,Header头类型为语言头,内容为1,1表示为简体中文。设置规则可参考表5所示的约束和第三取值约束条件中关于Lanuage的约束。
4.设置Type Header,Header头类型为客户端类型,内容为2,2表示为安卓客户端。设置规则可参考表5所示的约束和第三取值约束条件中关于Type的约束。
5.设置Version Header,Header头类型为客户端版本,内容为v1.0,v1.0表示客户端的版本号。设置规则可参考表5所示的约束和第三取值约束条件中关于Version的约束。
6.设置Status Header,Header头类型为OEMtag,内容为渠道ID。设置规则可参考表5所示的约束和第三取值约束条件中关于Status的约束。
7.设置DeviceToken Header,Header头类型为设备标识,内容为接入终端的设备号。设置规则可参考表5所示的约束和第三取值约束条件中关于DeviceToken的约束。
8.设置Name Header,Header头类型为客户端描述,终端自行定于对于本设备的描述。设置规则可参考表5所示的约束和第三取值约束条件中关于Name的约束。
9.设置Password Header,Header头类型为登录凭证,内容为经过认证后,平台下发的接入凭证。设置规则可参考表5所示的约束和第三取值约束条件中关于Password的约束。
10.设置End Symbol占用1Byte空间,取值为value[00],表示一个信令数据包的结束。
此时,基于登录业务的信令数据包已经构造完成,通过移动终端与即时通信平台的tcp长连接通道,可将信令数据包发送至即时通信平台的CMP,由CMP接收并解析数据包。
群组业务示例
在群组业务中,需要先创建群,然后将Index头中的userid加入群。只有当创建群和加人的操作都成功以后,才向客户端返回应答。如果创建群成功但是加人失败,需要将新创建的群删除,防止客户端下次登录初始化群组的时候得到一个空群。
1.构建协议载体的Method部分,群组业务使用的Method为Group,表示本次数据交互的信令为群组业务信令。设置规则要求可参考表3所示的约束和第一取值约束条件中关于Group的约束。
2.协议载体的Method部分构造完成后,设置From Header,Header头类型为From,内容为用户的Userid。From头表示业务由谁发起,Header内容中的Userid表示为业务的发起者的用户ID。设置规则可参考表5所示的约束和第三取值约束条件中关于From的约束。
3.设置To Header,Header头类型为to头,内容为与From头一直都填写用户Userid。设置规则可参考表5所示的约束和第三取值约束条件中关于To的约束。
4.设置Index Header,Header头类型为被邀请人头,内容为用户Userid。如果被邀请人为多个,可以设置多个Index Header。设置规则可参考表5所示的约束和第三取值约束条件中关于Index的约束。
5.设置Type Header,Header头类型为群名称。置规则可参考表5所示的约束和第三取值约束条件中关于Type的约束。
6.设置End Symbol占用1Byte空间,取值为value[00],表示一个信令数据包的结束。
此时,基于消息业务的信令数据包已经构造完成,通过移动终端与即时通信平台的tcp长连接通道,可将信令数据包发送至即时通信平台的CMP,由CMP接收并解析数据包。
CMP对数据包的解析过程以上文描述的消息业务数据包为例,其他业务数据包的解析过程与消息业务数据包的解析过程类似。
CMP接收移动终端发送来的数据包后,开始协议解析,针对消息业务数据包的解析过程如下:
1.CMP根据私有定制化二进制协议中关于Method的约束,截取Method部分数据内容,识别出Method为Message。解析规则可以参考表3所示的约束和第一取值约束条件中关于Message的约束。
2.CMP根据私有定制化二进制协议关于Header的约束,开始读取第一个Header头,识别Header类型、Header长度、Header内容;解析出Header为From,Header内容中的用户的ID(消息发起方)。解析规则可以参考表5所示的约束和第三取值约束条件中关于From的约束。
3.CMP根据私有定制化二进制协议关于Header的约束,进行下一个Header的解析,识别Header类型、Header长度、Header内容;解析出Header为To,解析出Header内容中的用户的ID(消息接收方)。解析规则参考表5所示的约束和第三取值约束条件中关于To的约束。
4.CMP根据私有定制化二进制协议关于Header的约束,进行下一个Header的解析,识别Header类型、Header长度、Header内容;解析出Header为MessageID,解析出Header内容中的消息唯一标识(全局唯一消息ID)。解析规则参考表5所示的约束和第三取值约束条件中关于MessageID的约束。
5.CMP根据私有定制化二进制协议关于Header的约束,进行下一个Header的解析,识别Header类型、Header长度、Header内容;解析出Header为Body,解析出Body(一种特殊的Header)中的消息内容。解析规则参考表5所示的约束和第三取值约束条件中关于Body的约束。
6.CMP根据私有定制化二进制协议关于End Symbol约束,识别End Symbol标识,确认协议数据包已全部读取完成。
本实施例通过上述过程可以实现基于私有定制化二进制协议的客户端与服务端之间的信令交互,而如图2所示,即时通信平台包括配置中心,所述CMP基于所述私有定制化二进制协议解析所述数据包,还包括:
基于所述私有定制化二进制协议的所支持的服务,在所述配置中心配置各个服务的名称与访问地址,在所述服务启动时,所述接入网关注册所述配置中心以获取配置数据,所述配置数据包括全部服务的名称与访问地址;
所述接入网关在数据包中增加相应于所述服务的数据包头,部署在所述即时通信平台上的协议栈根据所述数据包头中的服务名称,从所述配置数据中寻找到与所述服务名称匹配的数据,获取到所述服务的访问地址,所述协议栈将所述数据包发送至所述访问地址对应的端口,实现所述即时通信平台服务端之间的业务交互。
在一个示例中,基于私有定制化二进制协议实现服务端之间的业务交互过程如下:
1.基于私有定制化二进制协议通信的服务,在配置中心(CinConfigCenter,CCC)中,配置好服务名称与访问地址。
2.基于私有定制化二进制协议通信的服务,在服务启动时注册CCC获取全部平台服务名称与访问地址配置数据。
3.基于私有定制化二进制协议通信服务,构造通信数据包,构造方式与客户端与服务端之间通信方式一致。根据不同的业务情况,增加不同类型的Header。与客户端与服务端通信不同之处在于,服务端之间通信需要使用Route头,Route头是一类特殊的Header。Route Header头的内容填充需要访问的服务的名称。设置规则可以参考表5所示的约束和第三取值约束条件中关于Route的约束。
4.部署在即时通信平台的协议栈SDK会根据Route头中的服务名称,寻找到从CCC中获取的服务配置数据中找到与之匹配的服务数据,获取到服务的访问地址和端口。
5.该SDK会将信令数据包发型至与服务名称匹配的ip地址和端口。
6.被访问的服务通过监听端口获取到调用方服务发送过来的信令数据包后,进行解析。
由此,基于上述步骤可以实现各个服务端之间的业务交互。
本申请通过将二进制数据作为协议的数据结构,将数据包的大小尽可能的压缩,大大节省客户端与平台之间通信流量的消耗;且二进制数据,在进行序列化和反序列效率最高,能够降低终端、平台的性能消耗。本申请还通过采用Method、Header、Body结合的方式来构成信令数据包,通过在数据包类型、数据包头中预留标识位使协议本身的扩展性更好,且通过设置数据包类型、数据包头的取值可以极大丰富的各种应用场景和业务场景,较为灵活方便接入网关路由逻辑。
本发明还提供一种适用于移动终端的即时通信工具的通信装置。
图3为本发明实施例示出的适用于移动终端的即时通信工具的通信装置的结构框图,如图3所示,本实施的通信装置,包括:
协议构建单元,构建私有定制化二进制协议,所述私有定制化二进制协议的数据包结构包括数据包类型、数据包头和数据包体;其中,所述数据包类型用于指示所述数据包的类型,所述数据包类型包括多个值,每个值对应所述即时通信工具的一个业务场景,所述数据包头携带所述数据包的控制信息,所述数据包体用于携带所述数据包的数据内容;
数据通信单元,利用所述私有定制化二进制协议实现所述即时通信工具在移动终端与即时通信平台之间的即时通信。
在一些实施例中,数据通信单元包括第一通信模块和第二通信模块;
第一通信模块,用于即时通信工具在所述移动终端上发起交互信令时,利用部署在所述移动终端上的协议栈基于所述私有定制化二进制协议生成所述交互信令的数据包,并将所述数据包发送给所述即时通信平台之间的接入网关,所述接入网关基于所述私有定制化二进制协议解析所述数据包;
第二通信模块,用于在即时通信平台的接入网关中对数据包中增加私有定制化二进制协议的所支持的服务的数据包头,利用部署在所述即时通信平台上的协议栈基于所述数据包头中的服务名称中从配置数据寻找到与所述服务名称匹配的数据,获取到所述服务的访问地址,所述协议栈将所述数据包发送至所述访问地址对应的端口,实现所述即时通信平台服务端之间的业务交互;其中,所述配置中心,基于所述私有定制化二进制协议的所支持的服务,配置各个服务的名称与访问地址,在所述服务启动时,所述接入网关注册所述配置中心以获取配置数据,所述配置数据包括全部服务的名称与访问地址。
对于通信装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的通信装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明还提供了一种适用于移动终端的即时通信工具的通信系统。
图4为本发明实施例示出的适用于移动终端的即时通信工具的通信系统的结构示意图,如图4所示,在硬件层面,该通信系统包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器等。当然,该计算机装置还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机可执行指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成通信装置。处理器,执行存储器所存放的程序实现如上文描述的通信方法。
上述如本说明书图4所示实施例揭示的通信装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上文描述的通信方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述通信方法的步骤。
本发明还提供了一种计算机可读存储介质。
该计算机可读存储介质存储一个或多个计算机程序,该一个或多个计算机程序包括指令,该指令当被处理器执行时,能够实现上文描述的通信方法。
为了便于清楚描述本发明实施例的技术方案,在发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种适用于移动终端的即时通信工具的通信方法,其特征在于,所述方法包括:
构建私有定制化二进制协议,所述私有定制化二进制协议的数据包结构包括数据包类型、数据包头和数据包体;其中,所述数据包类型用于指示所述数据包的类型,所述数据包类型包括多个值,每个值对应所述即时通信工具的一个业务场景,所述数据包头携带所述数据包的控制信息,所述数据包体用于携带所述数据包的数据内容;所述数据包头包括头标识字段、头长度字段和头值字段三部分,所述头标识字段和所述头长度字段分别占用一个字节,所述头值字段占用所述头长度字段指示的字节数,所述头值字段的取值满足第三取值约束条件,所述第三取值约束条件用于在所述字节数的二进制取值范围内利用每个数值唯一区分每个控制信息;所述数据包类型对应的字段占用一个字节,所述字节的最高位取值为0或1,用于指示所述数据包类型为请求数据包或应答数据包,所述字节的其他位的取值满足第一取值约束条件或第二取值约束条件;其中,所述第一取值约束条件用于在对应为请求数据包的所述字节的二进制取值范围内利用每个数值唯一区分每个业务场景;所述第二取值约束条件用于在对应为应答数据包的所述字节的二进制取值范围内利用每个数值唯一区分每个业务场景;
利用所述私有定制化二进制协议实现所述即时通信工具在移动终端与即时通信平台之间的即时通信。
2.根据权利要求1所述的方法,其特征在于,所述数据包类型与所述数据包头的值均可扩展,且所述数据包类型的值与所述数据包头的值满足取值约束条件。
3.根据权利要求1所述的方法,其特征在于,所述私有定制化二进制协议的数据包结构还包括数据包结束标志位,所述数据包结束标志位占用一个字节,取值为预设的特定值。
4.根据权利要求1所述的方法,其特征在于,所述利用所述私有定制化二进制协议实现所述即时通信工具在移动终端与即时通信平台之间的即时通信,包括:
所述即时通信工具在所述移动终端上发起交互信令时,利用部署在所述移动终端上的协议栈基于所述私有定制化二进制协议生成所述交互信令的数据包,并将所述数据包发送给所述即时通信平台之间的接入网关,所述接入网关基于所述私有定制化二进制协议解析所述数据包。
5.根据权利要求4所述的方法,其特征在于,所述即时通信平台包括配置中心,所述接入网关基于所述私有定制化二进制协议解析所述数据包,包括:
基于所述私有定制化二进制协议所支持的服务,在所述配置中心配置各个服务的名称与访问地址,在所述服务启动时,所述接入网关注册所述配置中心以获取配置数据,所述配置数据包括全部服务的名称与访问地址;
所述接入网关在数据包中增加相应于所述服务的数据包头,部署在所述即时通信平台上的协议栈根据所述数据包头中的服务名称,从所述配置数据中寻找到与所述服务名称匹配的数据,获取到所述服务的访问地址,所述协议栈将所述数据包发送至所述访问地址对应的端口,实现所述即时通信平台服务端之间的业务交互。
6.一种适用于移动终端的即时通信工具的通信装置,其特征在于,包括:
协议构建单元,构建私有定制化二进制协议,所述私有定制化二进制协议的数据包结构包括数据包类型、数据包头和数据包体;其中,所述数据包类型用于指示所述数据包的类型,所述数据包类型包括多个值,每个值对应所述即时通信工具的一个业务场景,所述数据包头携带所述数据包的控制信息,所述数据包体用于携带所述数据包的数据内容;所述数据包头包括头标识字段、头长度字段和头值字段三部分,所述头标识字段和所述头长度字段分别占用一个字节,所述头值字段占用所述头长度字段指示的字节数,所述头值字段的取值满足第三取值约束条件,所述第三取值约束条件用于在所述字节数的二进制取值范围内利用每个数值唯一区分每个控制信息;所述数据包类型对应的字段占用一个字节,所述字节的最高位取值为0或1,用于指示所述数据包类型为请求数据包或应答数据包,所述字节的其他位的取值满足第一取值约束条件或第二取值约束条件;其中,所述第一取值约束条件用于在对应为请求数据包的所述字节的二进制取值范围内利用每个数值唯一区分每个业务场景;所述第二取值约束条件用于在对应为应答数据包的所述字节的二进制取值范围内利用每个数值唯一区分每个业务场景;
数据通信单元,利用所述私有定制化二进制协议实现所述即时通信工具在移动终端与即时通信平台之间的即时通信。
7.一种适用于移动终端的即时通信工具的通信系统,其特征在于,包括处理器和存储器;
所述存储器,存储计算机可执行指令;
所述处理器,所述计算机可执行指令在被执行时使所述处理器执行如权利要求1-5任一项所述的通信方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有一个或多个计算机程序,所述一个或多个计算机程序被执行时实现如权利要求1-5任一项所述的通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911121889.8A CN112822090B (zh) | 2019-11-15 | 2019-11-15 | 一种适用于移动终端的即时通信工具的通信方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911121889.8A CN112822090B (zh) | 2019-11-15 | 2019-11-15 | 一种适用于移动终端的即时通信工具的通信方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112822090A CN112822090A (zh) | 2021-05-18 |
CN112822090B true CN112822090B (zh) | 2023-03-31 |
Family
ID=75852037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911121889.8A Active CN112822090B (zh) | 2019-11-15 | 2019-11-15 | 一种适用于移动终端的即时通信工具的通信方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112822090B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428192A (zh) * | 2012-05-25 | 2013-12-04 | 腾讯科技(北京)有限公司 | 一种封装与解析二进制协议数据的方法和装置 |
CN103559217A (zh) * | 2013-10-17 | 2014-02-05 | 北京航空航天大学 | 一种面向异构数据库的海量组播数据入库实现方法 |
CN104660723A (zh) * | 2013-11-25 | 2015-05-27 | 上海益尚信息科技有限公司 | 新型IPv6网络中用于空时空频发射机基带处理的方法 |
CN105450359A (zh) * | 2015-10-14 | 2016-03-30 | 深圳市网通电子商务有限公司 | 自定义二进制结构化协议数据的发送和接收方法 |
CN105634684A (zh) * | 2014-11-19 | 2016-06-01 | 中国移动通信集团广东有限公司 | 一种数据包的处理方法、装置及服务器 |
CN106936685A (zh) * | 2015-12-30 | 2017-07-07 | 航天信息股份有限公司 | 一种基于实时交互的通讯方法及系统 |
CN108632252A (zh) * | 2018-04-03 | 2018-10-09 | 中国人民解放军战略支援部队信息工程大学 | 一种私有网络协议迭代逆向分析方法、装置及服务器 |
CN110417713A (zh) * | 2018-04-28 | 2019-11-05 | 广东亿迅科技有限公司 | 一种基于物联网的设备数据传输方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7318075B2 (en) * | 2004-02-06 | 2008-01-08 | Microsoft Corporation | Enhanced tabular data stream protocol |
CA2736313C (en) * | 2008-09-08 | 2017-03-21 | Research In Motion Limited | Apparatus and method for macro operation involving a plurality of session protocol transactions |
ES2439690T3 (es) * | 2011-01-25 | 2014-01-24 | Escaux Nv | Una pasarela de abstracción de red y un método correspondiente para abstraer un punto extremo |
CN104852955B (zh) * | 2015-03-30 | 2018-09-21 | 新浪网技术(中国)有限公司 | 一种数据处理方法及系统 |
CN106470185A (zh) * | 2015-08-17 | 2017-03-01 | 红云红河烟草(集团)有限责任公司 | 基于c/s模式的数据处理方法及系统 |
CN107040609B (zh) * | 2017-05-25 | 2020-09-04 | 腾讯科技(深圳)有限公司 | 一种网络请求处理方法和装置 |
-
2019
- 2019-11-15 CN CN201911121889.8A patent/CN112822090B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428192A (zh) * | 2012-05-25 | 2013-12-04 | 腾讯科技(北京)有限公司 | 一种封装与解析二进制协议数据的方法和装置 |
CN103559217A (zh) * | 2013-10-17 | 2014-02-05 | 北京航空航天大学 | 一种面向异构数据库的海量组播数据入库实现方法 |
CN104660723A (zh) * | 2013-11-25 | 2015-05-27 | 上海益尚信息科技有限公司 | 新型IPv6网络中用于空时空频发射机基带处理的方法 |
CN105634684A (zh) * | 2014-11-19 | 2016-06-01 | 中国移动通信集团广东有限公司 | 一种数据包的处理方法、装置及服务器 |
CN105450359A (zh) * | 2015-10-14 | 2016-03-30 | 深圳市网通电子商务有限公司 | 自定义二进制结构化协议数据的发送和接收方法 |
CN106936685A (zh) * | 2015-12-30 | 2017-07-07 | 航天信息股份有限公司 | 一种基于实时交互的通讯方法及系统 |
CN108632252A (zh) * | 2018-04-03 | 2018-10-09 | 中国人民解放军战略支援部队信息工程大学 | 一种私有网络协议迭代逆向分析方法、装置及服务器 |
CN110417713A (zh) * | 2018-04-28 | 2019-11-05 | 广东亿迅科技有限公司 | 一种基于物联网的设备数据传输方法及装置 |
Non-Patent Citations (4)
Title |
---|
An Overview of the Scala Programming Language;M Odersky;《百度学术》;20181231;全文 * |
On strategic multistage operational two-stage stochastic 0–1 optimization for the Rapid Transit Network Design problem;Cadarso;《European journal of operational research》;20181231;全文 * |
二进制私有协议逆向字段格式提取技术研究与实现;陶思宇;《CNKI中国知网》;20190515;全文 * |
基于SpringBoot框架社交网络平台的设计与实现;刘敏;《CNKI中国知网》;20190115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112822090A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11470023B2 (en) | Session initiation method and device | |
US11336734B1 (en) | System and method for aggregating communication connections | |
JP2007052784A (ja) | セッション開始プロトコルでシステムメッセージ転送方法 | |
US20200045168A1 (en) | Method and Apparatus to Identify Spam/Fraudulent/Robo Calls | |
CN110933180A (zh) | 一种通信建立方法、装置、负载设备及存储介质 | |
KR20120117979A (ko) | 대화 중에 복수의 통신 양식을 전송하는 것 | |
US20130282838A1 (en) | Group sms messaging | |
EP2629484A1 (en) | Resolving device specific identifiers to a user identifier to initiate a dialog establishment with devices of a user | |
CN101223746B (zh) | 寻呼模式消息收发 | |
US20140225976A1 (en) | Session initiation method and system | |
CN103546437A (zh) | 一种ims中实现离线消息收发的方法、ue及as | |
WO2016151395A1 (en) | Improvements relating to group messaging | |
EP2974159B1 (en) | Method, device and system for voice communication | |
WO2017036235A1 (zh) | 一种信息传输的方法和装置 | |
CN1988546A (zh) | 获取会话起始协议消息传输路径的方法及系统 | |
WO2014187397A1 (zh) | 多媒体消息的发布方法及装置 | |
JP5557262B2 (ja) | インスタントメッセージ用マルチメディア着信音提示方法及びシステム | |
US20060280187A1 (en) | Communication Method and Radio Communication Terminal | |
US10063648B2 (en) | Relaying mobile communications | |
CN112822090B (zh) | 一种适用于移动终端的即时通信工具的通信方法、装置和系统 | |
US20090187971A1 (en) | Method and processor for delegated transmission/ reception of a session initiation protocol, sip, message | |
US8868759B2 (en) | Communication system and server | |
WO2017032110A1 (zh) | 一种应用消息的处理系统、方法及应用设备 | |
US9973623B2 (en) | Methods, devices and system for logging calls for terminals | |
WO2022143070A1 (zh) | 一种通信方法和通信系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |