CN108509184A - 消息分发方法、计算机可读存储介质及电子设备 - Google Patents

消息分发方法、计算机可读存储介质及电子设备 Download PDF

Info

Publication number
CN108509184A
CN108509184A CN201810267678.4A CN201810267678A CN108509184A CN 108509184 A CN108509184 A CN 108509184A CN 201810267678 A CN201810267678 A CN 201810267678A CN 108509184 A CN108509184 A CN 108509184A
Authority
CN
China
Prior art keywords
message
type
distribution
judge
distributed
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.)
Granted
Application number
CN201810267678.4A
Other languages
English (en)
Other versions
CN108509184B (zh
Inventor
汪刚
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810267678.4A priority Critical patent/CN108509184B/zh
Publication of CN108509184A publication Critical patent/CN108509184A/zh
Application granted granted Critical
Publication of CN108509184B publication Critical patent/CN108509184B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Abstract

本发明提供一种消息分发方法,包括以下步骤:创建消息注册函数;接收消息,将所述消息的属性信息输入消息注册函数;解析出所述消息的消息类型并判断消息类型是否有效,如果消息类型有效,则对消息进行分发,否则,抛弃消息。本发明还涉及相关的计算机可读存储介质以及相关电子设备。

Description

消息分发方法、计算机可读存储介质及电子设备
技术领域
本发明涉及互联网移动端应用开发领域,尤其涉及一种消息分发方法、相关的计算机可读存储介质以及电子设备。
背景技术
在移动端应用开发领域,由于业务的需要,经常需要对消息进行分发,比较常见的方法是通过代理设计模式来实现消息的分发。具体过程如下:首先创建一个消息分发类,在消息分发类中设置一个代理对象和一个代理方法声明,并且让代理对象去实现声明的代理方法,这样,每当新增一个新的分发类型至少需要修改两个对象,会使得消息分发类无限地扩大。
因此,需要一种消息分发方法,能够实现更便捷的消息分发且避免程序上的臃肿。
发明内容
为了克服上述问题的至少一个方面,本发明实施例提供一种消息分发方法,通过注册函数代替了常规方案中的代理,避免了消息转发类无限扩大和臃肿的问题,并且通过注册的方案,能够避免消息分发类之间相互影响。
根据本发明的一个方面,提供一种消息分发方法,包括如下步骤:
步骤S1,创建消息注册函数;
步骤S2,接收消息,将消息的属性信息输入消息注册函数;
步骤S3,解析出消息的消息类型并判断消息类型是否有效,如果消息类型有效,则对消息进行分发,否则,抛弃消息。
根据一些实施例,消息的属性信息包括:消息类型、消息内容和处理消息的协议。
根据一些实施例,步骤S2中将消息的属性信息输入消息注册函数之后还包括:为属性信息中的消息类型分配一个特定的标签。
根据一些实施例,步骤S3中解析出消息类型之前还包括:通过特定的标签找到对应的消息。
根据一些实施例,步骤S3中判断消息类型是否有效包括如下步骤:判断消息类型是否过期,如果消息类型过期,则将消息抛弃,否则判断消息类型的长度是否大于零,如果消息类型的长度大于零,则判定消息类型有效。
根据一些实施例,步骤S3中对消息进行分发之前还包括:判断消息是否存在分发对象,如果消息存在分发对象,则对消息进行分发,否则,抛弃消息。
根据一些实施例,在判断存在分发对象的步骤之后还包括:判断分发对象是否响应分发方法,如果分发对象响应分发方法,则对消息进行分发,否则,抛弃消息。
根据一些实施例,在判断分发对象响应分发方法之后还包括:判断消息分发对象是主播端还是用户端。
根据本发明的另一个方面,提供一种计算机可读存储介质,其上存储有可执行指令,指令在由处理器执行时,可以实现根据上述实施例中的任一项所述的消息分发方法的步骤。
根据本发明的又一个方面,提供一种电子设备,其包括:
存储器,用于存储可执行指令;以及
处理器,用于执行存储器中存储的可执行指令,以实现根据上述实施例中的任一项所述的消息分发方法的步骤。
与现有技术相比,本发明具有以下优点:用创建的消息注册函数代替了常规方案的代理,只需要将消息进行注册即可对消息进行分发,有效避免了常规方案中消息转发类无限扩大和臃肿的问题,减少了消息转发类之间的影响。
附图说明
通过下文中参照附图对本发明所作的描述,本发明的其它目的和优点将显而易见,并可帮助对本发明有全面的理解。
图1是实施根据本发明实施例的消息分发方法的整体流程图;
图2是实施根据本发明实施例的消息有效性判断和分发的流程图;
图3是根据本发明实施例的计算机可读存储介质的结构示意图;
图4是根据本发明实施例的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。
本发明提供一种消息分发方法,根据图1所示,该方法包括以下步骤:
S1,创建消息注册函数。
创建一个消息注册函数,用于对消息进行注册。例如,这个消息注册函数可以是addHandles,这个函数可以包括两个参数,第一个参数可以是消息的类型,消息的类型可以是以数组的形式存在,例如,这个参数可以是messageTypeArray,这个参数的类型可以是NSArray;第二个参数可以是处理消息的协议,这个协议参数可以是handleObj。
通过消息注册函数代替了常规方案的代理,无需再向消息处理类中添加代码,只需要注册消息就可以完成的消息的分发,可以避免常规方案导致消息转发类无限扩大和臃肿的问题。
S2,接收消息,将消息的属性信息输入消息注册函数。
接收消息,将需要进行分发的消息进行注册,不需要进行分发的消息暂时不作处理,并将这些不需要进行分发的消息保存起来。把需要进行分发的消息的属性信息输入到消息注册函数,进行注册。注册过程如下:为每个消息创建一个线程,线程在系统中可以对应一个任务,在这个线程中,可以接收消息类型的参数和处理消息的协议参数,例如可以是messageTypeArray和handleObj,接收之后可以对messageTypeArray进行遍历,然后,创建一个处理对象,例如可以是obj,将handleObj作为属性赋值给obj,这样hangdleObj就作为obj的一个属性保存起来。上述过程的目的是将输入的属性消息包装成字典或者对象,然后将包装好的字典和对象保存到一个更大的字典中。字典都是由键值(key/value)对构成的,键值对能够方便字典进行存取值,其中,键(key)就是每个消息的消息类型,是消息在字典中的特定的标签,通过这个特定的标签就能找到对应的消息;值(value)是每个消息所需要处理的事件,也即是收到每个消息后需要对每个消息执行的操作。键值对可以是成对存在的,并且通过键能够准确找到相对应的值。
S3,解析出消息的消息类型并判断消息类型是否有效,如果消息类型有效,则对消息进行分发,否则,抛弃消息。
当要对一条信息进行分发时,通过这条信息特定的标签去注册函数的字典中找到这条信息,然后,这条信息可以触发接收信息函数,例如,可以是recieveMsg函数。之后,接收信息函数可以回调发送信息函数,例如,可以是deliverMessage函数,这个deliverMessage函数可以包括消息参数,例如,消息参数可以是msg,这个msg是服务端发送给客户端的消息,其可以是一个字符串,它可以包含消息类型,例如:
@"type@=bspq/rid@=302898/aid@=99/lid@=1/qid@=362f7ddecf/idx@=1/cnt@=6/at@=10/″
这个字符串是根据一定的规则和分割符号组成的,例如,bspq是消息类型type对应的值,也即是bspq是这条消息的类型。其他的各部分分别代表了信息的不同属性,例如,rid可以代表房间号,aid可以代表广告地址。当然,信息的属性并不局限于此。
在接收到消息参数后,使用信息解析函数,例如,可以是getTypeWithSTTString,将消息参数中的消息类型解析出来,解析出来的消息类型可以为msgType。然后判断消息类型是否有效,如果消息类型有效,则对消息进行分发,否则,抛弃消息。
具体地,判断消息类型是否有效包括如下步骤:在拿到这个消息类型之后,首先需要判断这个消息类型是否过期,过期是指维护了一个过期列表,当消息类型在这个过期列表中的时候,这个消息类型就过期了,此时就可以直接将此消息抛弃,如果消息类型不在过期列表里,说明此消息类型没有过期。此时就需要进一步判断这个消息类型的长度是否大于零,如果这个消息类型的长度大于零,则说明这是一个有效的消息类型,可以对此消息进行分发,如果这个消息类型的长度不大于零,则说明这不是一个有效的消息类型,可以将此消息抛弃。
在一些实施例中,在确定了消息类型有效后还需要判断消息是否存在分发对象。判断过程如下:创建一个子线程,在子线程中,使用key去字典中找到对应的value,这个value是key对应的消息的一个数组,数组中包含了消息的信息,例如消息的类型和消息要执行的操作等。然后遍历这个数组,判断这个消息是否存在分发的对象。如果这个消息存在分发的对象,就可以对这个消息进行分发,如果这个消息不存在分发的对象,就不能对这个消息进行分发,则抛弃该消息。
在一些实施例中,在确定了消息存在分发对象后还需要判断分发对象是否响应分发方法。如果分发对象响应分发方法,则说明分发对象达到了接收消息的能力,就可以将消息分发给该分发对象,否则,抛弃该消息。
在一些实施例中,在确定了分发对象能够响应分发方法后还需要判断消息分发对象是主播端还是客户端。具体判断过程如下:接收信息函数可以包括主机类型参数,例如,可以是hostType,这个主机类型参数是不同的值说明是发送给不同的端口,这个值是和服务端约定的,例如,可以约定主机类型参数为1时发送给主播端,主机类型参数为2时发送给客户端,也可以约定主机类型参数为1时发送给客户端,主机类型参数为2时发送给主播端。当读取了主机类型参数时,返回询问服务端,查看具体约定情况,即可判断消息分发对象是主播端还是客户端了。
上述步骤实现了对传入进来的消息的保留,还实现了对每个消息分发的对象协议handleObj的保留,当有消息到来的时候,去保存的字典中找到这个消息,并且找到这个消息对应的协议handleObj,让handleObj去调用消息的分发方法函数来实现消息的分发,以后如果需要增加消息只需要实现handleObj协议,并且调用一下addHandles就可以实现消息分发,通过创建消息注册函数简化了逻辑,通过注册的逻辑,将代理所需要的协议以注册的方式实现,可以有效避免消息分发类的臃肿。
图2是消息有效性判断和分发的具体流程图,结合图2对消息分发作简要描述。
解析出消息类型之后,首先判断消息类型是否过期,如果过期,则抛弃消息,否则,判断消息类型长度是否大于零,如果大于零,则判断消息是否存在分发对象,如果不大于零,则抛弃该消息;如果存在分发对象,则判断分发对象是否响应分发方法,如果判定不存在分发对象,则抛弃该消息;如果分发对象响应分发方法,则判断分发对象是主播端还是客户端,如果分发对象不响应分发方法,则抛弃该消息;最后根据判断的结果将消息分发给对应的主播端或者客户端。
这样,当有消息来的时候,去保存的字典中找到这个消息,并且找到这个消息对应的信息,通过信息来找到这个消息分发的对象,来实现对消息的分发。以后需要增加消息只需要实现该消息对应的处理消息的协议,不需要向消息分发类中增加对象,有效避免了消息分发类的臃肿,并且通过创建注册函数,将代理所需要的协议以注册的方式实现,简化了消息分发的过程。
基于同一发明构思,参考图3所示,本发明还提供一种计算机可读存储介质301,其上存储有可执行指令302,可执行指令302在由一个或多个处理器执行时,可以实现根据上述实施例中的任一项所述的消息分发方法的步骤。
基于同一发明构思,参考图4所示,本发明还提供一种电子设备401,该电子设备401包括:
存储器410,其用于存储可执行指令411;以及
处理器420,其用于执行存储器410中存储的可执行指令411,以实现如上述实施例中任一项所述的消息分发方法的步骤。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种消息分发方法,其特征在于,包括如下步骤:
步骤S1,创建消息注册函数;
步骤S2,接收消息,将所述消息的属性信息输入所述消息注册函数;
步骤S3,解析出所述消息的消息类型并判断所述消息类型是否有效,如果所述消息类型有效,则对所述消息进行分发,否则,抛弃所述消息。
2.根据权利要求1所述的方法,其特征在于,所述属性信息包括:消息类型、消息内容和处理消息的协议。
3.根据权利要求2所述的方法,其特征在于,步骤S2中将所述消息的属性信息输入所述消息注册函数之后还包括:为所述属性信息中的消息类型分配一个特定的标签。
4.根据权利要求3所述的方法,其特征在于,步骤S3中解析出所述消息类型之前还包括:通过所述特定的标签找到对应的消息。
5.根据权利要求1所述的方法,其特征在于,步骤S3中判断所述消息类型是否有效包括如下步骤:判断所述消息类型是否过期,如果所述消息类型过期,则将所述消息抛弃,否则判断所述消息类型的长度是否大于零,如果所述消息类型的长度大于零,则判定所述消息类型有效。
6.根据权利要求1所述的方法,其特征在于,步骤S3中对所述消息进行分发之前还包括:判断所述消息是否存在分发对象,如果所述消息存在分发对象,则对所述消息进行分发,否则,抛弃所述消息。
7.根据权利要求6所述的方法,其特征在于,在判断存在分发对象的步骤之后还包括:判断所述分发对象是否响应分发方法,如果所述分发对象响应分发方法,则对所述消息进行分发,否则,抛弃所述消息。
8.根据权利要求7所述的方法,其特征在于,在判断所述分发对象响应分发方法之后还包括:判断所述消息分发对象是主播端还是用户端。
9.一种计算机可读存储介质,其上存储有可执行指令,所述指令在由处理器执行时,实现根据权利要求1-8中的任一项所述的消息分发方法的步骤。
10.一种电子设备,包括:
存储器,用于存储可执行指令;以及
处理器,用于执行所述存储器中存储的可执行指令,以实现根据权利要求1-8中任一项所述的消息分发方法的步骤。
CN201810267678.4A 2018-03-28 2018-03-28 消息分发方法、计算机可读存储介质及电子设备 Active CN108509184B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810267678.4A CN108509184B (zh) 2018-03-28 2018-03-28 消息分发方法、计算机可读存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810267678.4A CN108509184B (zh) 2018-03-28 2018-03-28 消息分发方法、计算机可读存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN108509184A true CN108509184A (zh) 2018-09-07
CN108509184B CN108509184B (zh) 2021-11-09

Family

ID=63379075

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810267678.4A Active CN108509184B (zh) 2018-03-28 2018-03-28 消息分发方法、计算机可读存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN108509184B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109302467A (zh) * 2018-09-19 2019-02-01 武汉斗鱼网络科技有限公司 消息分发方法、装置、终端及存储介质

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1402559A (zh) * 2001-08-10 2003-03-12 华为技术有限公司 同时支持两种风格命令行配置的实现方法
CN1635781A (zh) * 2003-12-29 2005-07-06 北京中视联数字系统有限公司 一种数字电视接收机中间件消息统一处理方法
US20090245113A1 (en) * 2008-03-27 2009-10-01 Nec Corporation Load balancer, network system, load balancing method, and program
CN102664913A (zh) * 2012-03-21 2012-09-12 奇智软件(北京)有限公司 网页访问控制方法和装置
CN104079599A (zh) * 2013-03-27 2014-10-01 招商局国际信息技术有限公司 一种消息实时同步方法以及集装箱码头作业系统
CN104090836A (zh) * 2014-02-17 2014-10-08 腾讯科技(深圳)有限公司 应用程序对系统广播的响应测试方法及装置
CN104243611A (zh) * 2014-09-30 2014-12-24 浪潮软件股份有限公司 一种基于分发思想的消息服务中间件系统
EP2525531A4 (en) * 2010-06-17 2015-06-24 Zte Corp METHOD AND NETWORK ACCESS DEVICE FOR DATA TRANSFER BETWEEN DIFFERENT PHYSICAL MEDIA
US9122489B1 (en) * 2013-03-13 2015-09-01 Wal-Mart Stores, Inc. Extended language precompiler
CN105022627A (zh) * 2015-06-02 2015-11-04 上海斐讯数据通信技术有限公司 一种Android系统中View间的通信方法
US20170003989A1 (en) * 2015-06-30 2017-01-05 International Business Machines Corporation Automatic discovery of a javascript api
US20170006135A1 (en) * 2015-01-23 2017-01-05 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
CN106454770A (zh) * 2016-10-09 2017-02-22 武汉斗鱼网络科技有限公司 一种移动终端上消息分类分发处理的方法和系统
CN106648928A (zh) * 2016-11-29 2017-05-10 成都广达新网科技股份有限公司 一种进程间通讯的方法及装置
CN107749894A (zh) * 2017-11-09 2018-03-02 吴章义 一种安全、简单、智能的物联网系统

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1402559A (zh) * 2001-08-10 2003-03-12 华为技术有限公司 同时支持两种风格命令行配置的实现方法
CN1635781A (zh) * 2003-12-29 2005-07-06 北京中视联数字系统有限公司 一种数字电视接收机中间件消息统一处理方法
US20090245113A1 (en) * 2008-03-27 2009-10-01 Nec Corporation Load balancer, network system, load balancing method, and program
EP2525531A4 (en) * 2010-06-17 2015-06-24 Zte Corp METHOD AND NETWORK ACCESS DEVICE FOR DATA TRANSFER BETWEEN DIFFERENT PHYSICAL MEDIA
CN102664913A (zh) * 2012-03-21 2012-09-12 奇智软件(北京)有限公司 网页访问控制方法和装置
US9122489B1 (en) * 2013-03-13 2015-09-01 Wal-Mart Stores, Inc. Extended language precompiler
CN104079599A (zh) * 2013-03-27 2014-10-01 招商局国际信息技术有限公司 一种消息实时同步方法以及集装箱码头作业系统
CN104090836A (zh) * 2014-02-17 2014-10-08 腾讯科技(深圳)有限公司 应用程序对系统广播的响应测试方法及装置
CN104243611A (zh) * 2014-09-30 2014-12-24 浪潮软件股份有限公司 一种基于分发思想的消息服务中间件系统
US20170006135A1 (en) * 2015-01-23 2017-01-05 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
CN105022627A (zh) * 2015-06-02 2015-11-04 上海斐讯数据通信技术有限公司 一种Android系统中View间的通信方法
US20170003989A1 (en) * 2015-06-30 2017-01-05 International Business Machines Corporation Automatic discovery of a javascript api
CN106454770A (zh) * 2016-10-09 2017-02-22 武汉斗鱼网络科技有限公司 一种移动终端上消息分类分发处理的方法和系统
CN106648928A (zh) * 2016-11-29 2017-05-10 成都广达新网科技股份有限公司 一种进程间通讯的方法及装置
CN107749894A (zh) * 2017-11-09 2018-03-02 吴章义 一种安全、简单、智能的物联网系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
洒水先生: "iOS消息转发以及 NSProxy 实战", 《HTTPS://WWW.CNBLOGS.COM/GAOX97329498/P/11915777.HTML》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109302467A (zh) * 2018-09-19 2019-02-01 武汉斗鱼网络科技有限公司 消息分发方法、装置、终端及存储介质

Also Published As

Publication number Publication date
CN108509184B (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
CN107579951B (zh) 一种业务数据处理方法、业务处理方法及设备
US7016307B2 (en) Method and system for finding related nodes in a social network
US8140630B2 (en) Publish/subscribe message broker for message sequences
US10057166B2 (en) Network verification
US9110884B2 (en) Message publishing and subscribing method and apparatus
CN108664613A (zh) 数据查询方法、装置、计算机设备及存储介质
US11398981B2 (en) Path creation method and device for network on chip and electronic apparatus
US20130297528A1 (en) Business process model notation extension for modeling of integration processes
CN106486118B (zh) 一种应用的语音控制方法和装置
US9648078B2 (en) Identifying a browser for rendering an electronic document
CN108153803A (zh) 一种数据获取方法、装置及电子设备
CN108733457A (zh) 分布式事务的实现方法和装置
CN108509184A (zh) 消息分发方法、计算机可读存储介质及电子设备
US20220100644A1 (en) METHOD AND SYSTEM FOR AUTOMATED TESTING OF WEB SERVICE APIs
CN108469993A (zh) 消息转发方法、计算机可读存储介质及电子设备
US20110125848A1 (en) Method of performing data mediation, and an associated computer program product, data mediation device and information system
CN116881040A (zh) 一种业务操作处理方法、装置、电子装置和存储介质
US6604122B1 (en) Method and apparatus for evaluating a data processing request performed by distributed processes
CN113556414B (zh) 用于网络间通信的方法、网关设备和存储介质
CN111405007A (zh) Tcp会话管理方法、装置、存储介质及电子设备
US20220321513A1 (en) Method for chatting messages by topic based on subscription channel reference in server and user device
CN113014664B (zh) 网关适配方法、装置、电子设备和存储介质
CN104301423A (zh) 一种发送心跳报文的方法、装置及系统
CN113709177A (zh) 一种处理报文的方法及外调网关
CN114490718A (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