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

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

Info

Publication number
CN108469993A
CN108469993A CN201810310113.XA CN201810310113A CN108469993A CN 108469993 A CN108469993 A CN 108469993A CN 201810310113 A CN201810310113 A CN 201810310113A CN 108469993 A CN108469993 A CN 108469993A
Authority
CN
China
Prior art keywords
message
type
class
information
forwarding
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
CN201810310113.XA
Other languages
English (en)
Other versions
CN108469993B (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 CN201810310113.XA priority Critical patent/CN108469993B/zh
Publication of CN108469993A publication Critical patent/CN108469993A/zh
Application granted granted Critical
Publication of CN108469993B publication Critical patent/CN108469993B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Abstract

本发明提供一种消息转发方法,其包括以下步骤:创建消息处理类,用于接收消息并对消息进行处理;创建消息注册函数,用于对消息进行注册;以及创建消息注册类,用于对消息转发的对象能够接收的消息类型进行注册,并根据消息类型调用消息处理类中的相应的消息,然后根据消息在消息注册函数中注册的信息转发消息。本发明还涉及相关的计算机可读存储介质以及相关电子设备。

Description

消息转发方法、计算机可读存储介质及电子设备
技术领域
本发明涉及互联网移动端应用开发领域,尤其涉及一种消息转发方法、相关的计算机可读存储介质以及电子设备。
背景技术
在移动端应用开发领域,由于业务的需要,经常需要对服务端发送来的消息进行转发。消息转发分为两大阶段,第一阶段先征询接收者所属的类,看其是否能动态添加方法,以处理当前消息,这叫做“动态方法解析”;第二阶段涉及“完整的消息转发机制”,如果运行期系统已经把第一阶段执行完了,那么接收者自己就无法再以动态新增方法的手段来响应该消息了。此时,运行期系统会请求接收者以其他手段来处理与消息相关的方法调用。这又细分为两小步,首先,请接收者检查是否存在其他对象处理这条消息。若存在,则运行期系统会把消息转给那个对象,于是消息转发过程结束。否则,启动完整的消息转发机制,运行期系统会把与消息有关的全部细节都封装到NSInvocation对象中,再给接收者最后一次机会,令其设法解决当前还未处理的这条消息。但是这样会带来一个问题,动态方法解析需要在消息转发类中设置代理,不同消息转发之间的耦合会很严重,而且每次增加新的消息需要进行很多的操作,对于程序的修改非常不便。
因此,需要一种方便快捷并且能够有效减少耦合的消息转发方法。
发明内容
为了克服上述问题的至少一个方面,本发明实施例提供一种消息转发方法,通过创建消息处理类、消息注册函数和消息注册类,对需要进行转发的消息进行注册,并将这些消息与转发的对象进行匹配,大大减少了消息之间的耦合,并且能够保证消息转发的正确性。
根据本发明的一个方面,提供一种消息转发方法,包括如下步骤:
步骤S1,创建消息处理类,用于接收消息并对消息进行处理;
步骤S2,创建消息注册函数,用于对消息进行注册;以及
步骤S3,创建消息注册类,用于对消息转发的对象能够接收的消息类型进行注册,并根据消息类型调用消息处理类中的相应的消息,然后根据消息在消息注册函数中注册的信息转发消息。
根据一些实施例,步骤S1中对消息进行处理包括如下步骤:读取消息的基本信息并声明消息处理类遵守的协议。
根据一些实施例,基本信息包括:消息管理对象、消息内容、服务器类型和消息类型。
根据一些实施例,步骤S2中对消息进行注册包括如下步骤:
读取消息的属性信息;
创建指针,将属性信息保存在指针中;以及
利用消息处理类创建包括指针的消息处理对象,并且为消息处理对象设置代理方法。
根据一些实施例,属性信息包括:消息管理器类型、消息展示的地址和消息参数信息。
根据一些实施例,步骤S3中在对能够接收的消息类型进行注册之前还包括以下步骤:读取消息转发的对象能够接收的消息类型。
根据一些实施例,步骤S3中在根据消息类型调用消息处理类中的相应的消息之前还包括对消息转发的对象能够接收的消息类型与消息处理类中接收的消息的消息类型进行匹配,如果匹配成功,则对消息进行转发,否则,抛弃消息。
根据一些实施例,对消息进行转发包括调用代理方法以转发消息。
根据本发明的另一个方面,提供一种计算机可读存储介质,其上存储有可执行指令,指令在由处理器执行时,可以实现根据上述实施例中的任一项的消息转发方法的步骤。
根据本发明的又一个方面,提供一种电子设备,其包括:
存储器,用于存储可执行指令;以及
处理器,用于执行存储器中存储的可执行指令,以实现根据上述实施例中的任一项的消息转发方法的步骤。
与现有技术相比,本发明具有以下优点:通过创建消息处理类、消息注册函数和消息注册类,对需要进行转发的消息进行注册,每次添加消息不需要进行大幅修改,大大简化了消息转发的过程,并且减少了消息之间的耦合,增加了消息与转发对象的匹配,增强了消息转发的准确性。
附图说明
通过下文中参照附图对本发明所作的描述,本发明的其它目的和优点将显而易见,并可帮助对本发明有全面的理解。
图1是实施根据本发明实施例的消息转发方法的整体流程图;
图2是根据本发明实施例的计算机可读存储介质的结构示意图;
图3是根据本发明实施例的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。
本发明提供一种消息转发方法,根据图1所示,该方法包括以下步骤:
S1,创建消息处理类,用于接收消息并对消息进行处理。
创建一个消息处理类,例如,可以是msghandle,这个消息处理类继承于NSObject,NSObject是大多数Objective-C(扩充C的面向对象编程语言)类的继承的根类;它没有父类。通过NSObject,其它类继承了一些基础的与Objective-C语言编译器系统之间的接口,并且获得了在它的实例中表现为一个对象的能力。尽管NSObject实际上已经是一个类,但它不是一个严格的抽象类,它除了自己表现为一个简单类之外,实际上几乎无法完成任何有用的操作。如果想要添加任何属性(attributes)并制定实现逻辑,就必须创建一个或者多个从NSObject继承或者父类从NSObject继承的类(class)。
这个消息处理类需要遵守一个协议方法,因此,需要对这个协议进行声明。这个协议方法里规定了消息处理类的调用信息、调用关系以及其他的一些规则,例如,这个协议方法可以是msghandlePro。这个协议方法内部声明了一个函数,这个函数是无返回值类型,例如,可以是void。void的字面意思是空类型,但是它其实不是一个真正的类型,void的作用是对函数返回值和函数参数的限定,例如,这个函数没有返回值,那么这个函数可以声明成这样:void fun(int a)。
这个消息处理类读取消息的基本信息,消息的基本信息可以是消息管理对象、消息内容、服务器类型和消息类型,当然,消息的基本信息并不局限于此。其中,消息管理对象可以是msgSocketManager;消息内容可以是字符串类型,这个字符串可以是message;服务器类型可以是一个兼容的字段。
本步骤声明了一个协议方法,这个协议方法作为接收消息的入口,当需要使用这个消息处理类的时候就实现这个协议方法。
S2,创建消息注册函数,用于对消息进行注册。
在一些可能的实施例中,对消息进行注册包括如下步骤:
读取消息的属性信息;
创建指针,将属性信息保存在指针中;以及
利用消息处理类创建包括指针的消息处理对象,并且为消息处理对象设置代理方法。
其中,属性信息可以包括消息管理器类型、消息展示的地址和消息参数信息。消息管理器类型可以是socketManager;消息展示的地址即消息展示的具体位置,例如,在网络直播系统中,消息的内容是“发射一个火箭道具”,这个内容需要一个展示的载体,例如,它展示在“101房间主播”的屏幕上,也即是消息展示的地址是101房间主播对应的地址,在一些可能的实施例中,收到消息之后会创建一个视图,这个视图需要添加到一个已经展示的视图上面才能显示出来,这个已经展示的视图即是父视图,也就是消息展示的地址;消息参数信息可以保存在一个字典中,便于其他函数调用这些信息。
然后,可以创建一个指针,将上述的属性信息都保存在这个指针内,便于后续操作对上述属性信息的调用。例如,这个指针的名字可以是saveSocketmanager。
利用消息处理类创建一个消息处理对象,“类”是一个抽象的概念,“对象”则是一个具体的概念,例如,“类”可以代表“球类”,而“对象”可以代表“足球”。消息处理对象的创建过程如下:首先将消息处理类加载进内存,声明一个类型并引用S函数,这里的S函数指的是系统功能,然后,在堆内存中创建对象,给对象中属性默认初始化值,属性进行显示初始化,最后,构造方法进栈,对对象中的属性赋值,构造方法弹栈,将对象的地址值赋值给S函数,这里的“进栈”是指将值输入栈,“弹栈”是指将值输出栈。这个消息对象包括了上述指针,在消息处理对象的创建中可以用到allco函数和init函数,init函数是NSObject的指定初始化器,allco函数可以在堆上初始化内存给消息处理对象。
创建了消息处理对象之后,需要为这个消息处理对象设置代理方法。代理方法一般可以包括以下三种:静态代理、动态代理和子类代理。静态代理需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同的父类,它可以做到在不修改目标对象的功能前提下,对目标功能扩展,但是一旦接口增加方法,目标对象与代理对象都要维护;动态代理需要目标对象实现接口,代理对象不需要实现接口;子类代理是在内存中构建一个子类对象从而实现对目标对象功能的扩展。这里为了方便可以选择子类代理。
S3,创建消息注册类,用于对消息转发的对象能够接收的消息类型进行注册,并根据消息类型调用消息处理类中的相应的消息,然后根据消息在所述消息注册函数中注册的信息转发所述消息。
创建消息注册类,这个消息注册类继承于NSObject类,在这个消息注册类中声明一个函数。在确定了消息转发对象之后,读取消息转发对象能够接收的消息类型,这些消息类型以数组的形式存储在这个函数里。在这个函数内部,对数组的每个元素进行遍历,将消息转发的对象能够接收的消息类型与消息处理类中接收的消息的消息类型进行匹配,如果匹配成功,说明消息转发的对象可以接收这个消息,那么就可以对这个消息进行分发,否则,抛弃这个消息。在步骤S2中,为消息处理对象声明了一个代理方法,这里可以调用这个代理方法对消息进行转发。
本发明实施例通过创建消息处理类,定义一个通用的接口,对消息进行接收和处理;创建消息注册函数,对消息进行注册,便于对消息的调用;创建消息注册类,对消息转发对象能够接收的消息类型进行注册,通过消息类型对消息和转发对象进行匹配,实现消息转发的目的。本发明实施例用注册取代了传统方案中的代理,大大减少了消息之间的耦合,并且通过对所接收到的消息和消息转发对象所能够接收的消息进行匹配,大大增加了消息转发的准确性。
基于同一发明构思,参考图2所示,本发明还提供一种计算机可读存储介质201,其上存储有可执行指令202,可执行指令202在由一个或多个处理器执行时,可以实现根据上述实施例中的任一项所述的消息转发方法的步骤。
基于同一发明构思,参考图3所示,本发明还提供一种电子设备301,该电子设备301包括:
存储器310,其用于存储可执行指令311;以及
处理器320,其用于执行存储器310中存储的可执行指令311,以实现如上述实施例中任一项所述的消息转发方法的步骤。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种消息转发方法,其特征在于,包括如下步骤:
步骤S1,创建消息处理类,用于接收消息并对所述消息进行处理;
步骤S2,创建消息注册函数,用于对所述消息进行注册;以及
步骤S3,创建消息注册类,用于对所述消息转发的对象能够接收的消息类型进行注册,并根据所述消息类型调用所述消息处理类中的相应的消息,然后根据所述消息在所述消息注册函数中注册的信息转发所述消息。
2.根据权利要求1所述的方法,其特征在于,步骤S1中对消息进行处理包括如下步骤:读取所述消息的基本信息并声明所述消息处理类遵守的协议。
3.根据权利要求2所述的方法,其特征在于,所述基本信息包括:消息管理对象、消息内容、服务器类型和消息类型。
4.根据权利要求1所述的方法,其特征在于,步骤S2中对所述消息进行注册包括如下步骤:
读取所述消息的属性信息;
创建指针,将所述属性信息保存在所述指针中;以及
利用所述消息处理类创建包括所述指针的消息处理对象,并且为所述消息处理对象设置代理方法。
5.根据权利要求4所述的方法,其特征在于,所述属性信息包括:消息管理器类型、消息展示的地址和消息参数信息。
6.根据权利要求5所述的方法,其特征在于,步骤S3中在对能够接收的消息类型进行注册之前还包括以下步骤:读取所述消息转发的对象能够接收的消息类型。
7.根据权利要求6所述的方法,其特征在于,步骤S3中在根据所述消息类型调用所述消息处理类中的相应的消息之前还包括对所述消息转发的对象能够接收的消息类型与所述消息处理类中接收的消息的消息类型进行匹配,如果匹配成功,则对所述消息进行转发,否则,抛弃所述消息。
8.根据权利要求7所述的方法,其特征在于,对所述消息进行转发包括调用所述代理方法以转发所述消息。
9.一种计算机可读存储介质,其上存储有可执行指令,所述指令在由处理器执行时,实现根据权利要求1-8中的任一项所述的消息转发方法的步骤。
10.一种电子设备,包括:
存储器,用于存储可执行指令;以及
处理器,用于执行所述存储器中存储的可执行指令,以实现根据权利要求1-8中任一项所述的消息转发方法的步骤。
CN201810310113.XA 2018-04-04 2018-04-04 消息转发方法、计算机可读存储介质及电子设备 Active CN108469993B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810310113.XA CN108469993B (zh) 2018-04-04 2018-04-04 消息转发方法、计算机可读存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810310113.XA CN108469993B (zh) 2018-04-04 2018-04-04 消息转发方法、计算机可读存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN108469993A true CN108469993A (zh) 2018-08-31
CN108469993B CN108469993B (zh) 2021-04-27

Family

ID=63262791

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810310113.XA Active CN108469993B (zh) 2018-04-04 2018-04-04 消息转发方法、计算机可读存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN108469993B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109302467A (zh) * 2018-09-19 2019-02-01 武汉斗鱼网络科技有限公司 消息分发方法、装置、终端及存储介质
CN110096379A (zh) * 2019-04-30 2019-08-06 武汉斗鱼鱼乐网络科技有限公司 基于通用协议的消息分发方法、装置、设备及存储介质
CN112052054A (zh) * 2020-09-02 2020-12-08 北京奇艺世纪科技有限公司 函数调用方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103634200A (zh) * 2013-09-10 2014-03-12 北京思特奇信息技术股份有限公司 一种基于即时消息的闪图发送系统及方法
CN104349288A (zh) * 2013-07-25 2015-02-11 腾讯科技(深圳)有限公司 一种消息传输方法及装置
CN104375841A (zh) * 2014-12-03 2015-02-25 广州广电运通金融电子股份有限公司 一种基于linux系统的CEN/XFS标准的架构以及实现方法
KR20160027575A (ko) * 2014-09-01 2016-03-10 주식회사 옐로모바일 푸쉬 메시지를 이용한 광고 서비스를 제공하는 광고 서버
CN106250126A (zh) * 2016-07-26 2016-12-21 武汉深之度科技有限公司 一种Linux系统下的XFS实现系统及方法
CN107301095A (zh) * 2017-06-14 2017-10-27 北京小度信息科技有限公司 系统运行方法以及操作系统
CN107577483A (zh) * 2017-08-31 2018-01-12 武汉斗鱼网络科技有限公司 组件工程调用主工程代码的方法、存储介质、设备及系统
CN107741891A (zh) * 2017-10-17 2018-02-27 网易(杭州)网络有限公司 对象的析构方法、介质、装置和计算设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104349288A (zh) * 2013-07-25 2015-02-11 腾讯科技(深圳)有限公司 一种消息传输方法及装置
CN103634200A (zh) * 2013-09-10 2014-03-12 北京思特奇信息技术股份有限公司 一种基于即时消息的闪图发送系统及方法
KR20160027575A (ko) * 2014-09-01 2016-03-10 주식회사 옐로모바일 푸쉬 메시지를 이용한 광고 서비스를 제공하는 광고 서버
CN104375841A (zh) * 2014-12-03 2015-02-25 广州广电运通金融电子股份有限公司 一种基于linux系统的CEN/XFS标准的架构以及实现方法
CN106250126A (zh) * 2016-07-26 2016-12-21 武汉深之度科技有限公司 一种Linux系统下的XFS实现系统及方法
CN107301095A (zh) * 2017-06-14 2017-10-27 北京小度信息科技有限公司 系统运行方法以及操作系统
CN107577483A (zh) * 2017-08-31 2018-01-12 武汉斗鱼网络科技有限公司 组件工程调用主工程代码的方法、存储介质、设备及系统
CN107741891A (zh) * 2017-10-17 2018-02-27 网易(杭州)网络有限公司 对象的析构方法、介质、装置和计算设备

Non-Patent Citations (1)

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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109302467A (zh) * 2018-09-19 2019-02-01 武汉斗鱼网络科技有限公司 消息分发方法、装置、终端及存储介质
CN110096379A (zh) * 2019-04-30 2019-08-06 武汉斗鱼鱼乐网络科技有限公司 基于通用协议的消息分发方法、装置、设备及存储介质
CN110096379B (zh) * 2019-04-30 2022-09-09 武汉斗鱼鱼乐网络科技有限公司 基于通用协议的消息分发方法、装置、设备及存储介质
CN112052054A (zh) * 2020-09-02 2020-12-08 北京奇艺世纪科技有限公司 函数调用方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN108469993B (zh) 2021-04-27

Similar Documents

Publication Publication Date Title
US6779002B1 (en) Computer software framework and method for synchronizing data across multiple databases
JP3489123B2 (ja) アプリケーション結合方法
Walker et al. Asynchronous remote operation execution in distributed systems
CN108469993A (zh) 消息转发方法、计算机可读存储介质及电子设备
US9678723B2 (en) Application programming interface (API) engine
US7920852B2 (en) Compression of data transmitted between server and mobile device
JP2007511018A (ja) ソフトウェアをコンポーズする方法及び装置
WO2014206071A1 (en) Systems and methods for user group management
US9361277B2 (en) Method and apparatus for implementing microblog message pages
CN110647316B (zh) 通用业务对象的生成方法、装置、计算机设备及存储介质
EP3660665A1 (en) Business processing method, apparatus, device and system using the same, and readable storage medium of the same
CN111782259B (zh) 一种基于反向代理的微服务治理方法
US20100036859A1 (en) Message Exchange Pattern Rendezvous Abstraction
JP2019509567A (ja) アプリケーション(app)のためのリソースロード方法、サービス機能実施方法及び装置
CN108553904B (zh) 一种游戏匹配方法、装置、电子设备及介质
CN111159040A (zh) 一种测试数据生成方法、装置、设备及存储介质
CN115934076B (zh) 跨平台客户端的微服务提供装置、方法和电子设备
CN111061468B (zh) 一种映射方法及装置
CN111191103B (zh) 从互联网中识别分析企业主体信息方法、装置及存储介质
CN104158862A (zh) 在线交互网页的启动方法和客户端装置
US8229994B2 (en) Method, system, and program product for providing automatic group subscriptions
CN108491230A (zh) 动画显示方法和装置、客户端
CN110262912B (zh) 一种过程调用gRPC的调用方法及装置
CN108509184A (zh) 消息分发方法、计算机可读存储介质及电子设备
CN113805984B (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