CN107147620A - 一种消息交互处理方法、客户端和服务端 - Google Patents

一种消息交互处理方法、客户端和服务端 Download PDF

Info

Publication number
CN107147620A
CN107147620A CN201710257914.XA CN201710257914A CN107147620A CN 107147620 A CN107147620 A CN 107147620A CN 201710257914 A CN201710257914 A CN 201710257914A CN 107147620 A CN107147620 A CN 107147620A
Authority
CN
China
Prior art keywords
message
request
service end
connection
client
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
CN201710257914.XA
Other languages
English (en)
Other versions
CN107147620B (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 JUFENG TIANXIA TECHNOLOGY Co.,Ltd.
Original Assignee
Wuhan Bill Trading Center 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 Bill Trading Center Co Ltd filed Critical Wuhan Bill Trading Center Co Ltd
Priority to CN201710257914.XA priority Critical patent/CN107147620B/zh
Publication of CN107147620A publication Critical patent/CN107147620A/zh
Application granted granted Critical
Publication of CN107147620B publication Critical patent/CN107147620B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences

Abstract

本发明涉及一种消息交互处理方法、客户端及服务端,其方法包括与服务端建立连接;根据用户输入的请求命令生成请求消息,将请求消息发送至服务端,并判断请求消息是否为同步消息,如果是,则将用于处理请求消息的业务线程设置为阻塞等待状态,接收从服务端返回的回复消息,将回复消息设置为请求消息的答复消息,通知业务线程结束阻塞等待状态,结束处理流程;否则接收从服务端返回的回复消息,并调用socket连接对象的数据处理方法对回复消息进行处理,结束处理流程。本发明的方法利用线程阻塞实现了异步通信方式下的同步等待,实现了客户端与服务端之间的消息交互处理,通信效率较高,实现了同步与异步相结合的通信方式,满足不同场合的通信需求。

Description

一种消息交互处理方法、客户端和服务端
技术领域
本发明涉及消息处理技术领域,尤其涉及一种消息交互处理方法、客户端和服务端。
背景技术
传统的通信方式主要采用如下方式进行通信:客户端向服务器发送信息,提出请求,服务器接收客户端发来的请求,并能发送数据给客户端以做出回应。当我们用浏览器浏览网页,要查看某个文件时,我们的电脑会发出请求给文件服务器,文件服务器收到请求并同意后,将文件数据传送到我们的电脑。此时,电脑充当客户端的角色。电脑要和文件服务器交流,必须要规定通信的规矩,即协议,传统的协议比较复杂,大大降低了通信的效率,以及通信数据信息的准确信。
发明内容
本发明所要解决的技术问题是针对上述现有技术的不足,提供一种消息交互处理方法,该方法通过请求消息的消息ID作为回复消息的原消息ID,使得客户端与服务端的交互机制进行了简化,并通过线程阻塞实现了异步通信方式下的同步等待,通信效率较高。
本发明的另一个目的在于提供一种客户端和服务端。
为了实现上述目的,本发明的一个实施例提出了一种消息交互处理方法,应用于客户端,包括如下步骤:
步骤1:与服务端建立连接;
步骤2:根据用户输入的请求命令生成请求消息,将所述请求消息发送至服务端,并判断所述请求消息是否为同步消息,如果是,则将用于处理所述请求消息的业务线程设置为阻塞等待状态,进入步骤3,否则进入步骤4;
步骤3:接收从服务端返回的回复消息,将所述回复消息设置为所述请求消息的答复消息,通知所述业务线程结束阻塞等待状态,结束处理流程;
步骤4:接收从服务端返回的回复消息,并调用socket连接对象的数据处理方法对所述回复消息进行处理,结束处理流程。
本发明的一种消息交互处理方法,利用线程阻塞实现了异步通信方式下的同步等待,实现了客户端与服务端之间的消息交互处理,通信效率较高,实现了同步与异步相结合的通信方式,满足不同场合的通信需求。
另外,根据本发明上述实施例的一种消息交互处理方法还可以具有如下附加的技术特征:
在一些示例中,所述步骤1的具体实现为:
步骤11:初始化,根据服务端的IP地址设置连接参数,建立连接socket通道,并向服务端发送连接请求,以使服务端接收到连接请求后生成所述客户端对应的连接ID;
步骤12:客户端生成获取连接ID请求消息,并通过所述socket通道向服务端发送获取连接ID请求消息;
步骤13:接收服务端返回的连接ID回复消息,并从所述连接ID回复消息中读取客户端的连接ID,建立连接成功;
其中,所述连接ID请求消息的消息ID生成规则为:
服务端IP地址:连接ID:X;
X为由1开始递增的变量,且初次发送连接ID请求消息时,所述连接ID为空。
在一些示例中,与服务端建立连接之后,还包括:监测与服务端的连接状态,具体为:
定期创建一个空的ping消息;
根据所述ping消息生成ping消息对应的消息ID;
向所述socket通道中写入所述ping消息和所述ping消息对应的消息ID,并等待接收从服务端返回的ping回复消息,如果接收到ping回复消息,且根据所述ping回复消息读取的原消息ID与所述ping消息对应的消息ID相同,则判定与服务端处于连接状态,否则判定与服务端处于断开连接状态;
其中,生成ping消息ID的生成规则具体为:
服务端IP地址:连接ID:X;
其中,X为由1开始递增的变量,且初次发送ping消息时,所述连接ID为空。
在一些示例中,所述步骤2中,发送请求消息的具体实现为:
步骤21:根据用户输入的请求命令生成请求消息,根据所述请求消息生成请求消息对应的消息ID,并创建请求消息上下文;
步骤22:判断所述请求消息是否为同步消息,如果是,则将所述业务线程设置为阻塞等待状态,并将所述请求消息上下文、请求消息对应的消息ID和处于阻塞状态的业务线程存储至等待回复消息队列中,否则不做处理;
步骤23:将所述请求消息存储至写消息队列中;
步骤24:从所述写消息队列中逐个取出所述请求消息,将取出的所述请求消息转换为字节流,并向客户端的socket通道中写入该字节流,再将所述请求消息从所述写消息队列中删除,完成所述请求消息发送;
其中,所述请求消息上下文包括业务线程、请求消息和返回消息,且初次发送请求消息时,所述返回消息为空,所述请求消息对应的消息ID和回复消息对应的消息ID均为从1开始递增的变量,且初次发送请求消息时,二者均为1。
在一些示例中,所述步骤3的具体实现为:
步骤31:读线程接收从服务端返回的回复消息,读取所述回复消息中的原消息ID;
步骤32:判断所述回复消息中的原消息ID是否存在于所述等待回复消息队列中,如果是,则将所述回复消息设置为所述请求消息上下文的答复消息,通知所述业务线程结束阻塞等待状态,并从所述等待回复消息队列中删除对应的处于阻塞状态的业务线程,否则,直接进入步骤4。
在一些示例中,所述步骤4的具体实现为:
读线程接收从服务端返回的回复消息,读取回复消息中的数据信息,并将所述数据信息从字节流转换为消息格式,并调用socket连接对象的数据处理方法对消息格式的所述数据信息进行处理;其中,所述请求消息对应的消息ID为所述回复消息的原消息ID。
本发明第二方面的实施例还提出了一种消息交互处理方法,应用于服务端,包括以下步骤:
步骤1:与客户端建立连接;
步骤2:接收客户端发送的请求消息,并调用消息处理器对所述请求消息进行处理,得到回复消息,并返回回复消息;
步骤3:根据所述回复消息生成所述回复消息对应的消息ID;
步骤4:将所述回复消息发送至客户端;
其中,将读取的所述请求消息对应的消息ID设置为所述返回的回复消息的原消息ID。
根据本发明实施例的一种消息交互处理方法,实现了客户端与服务端之间的消息交互处理,通信效率较高。
另外,根据本发明上述实施例的一种消息交互处理方法还可以具有如下附加的技术特征:
在一些示例中,所述步骤1的具体实现为:
步骤11:接收客户端的连接请求,创建一个连接请求对象,所述连接请求对象根据所述连接请求生成客户端对应的连接ID;
步骤12:接收客户端发送的获取连接ID请求消息,根据所述连接ID创建一个返回用的连接ID回复消息;
步骤13:将所述连接ID回复消息转换为字节流,并向服务端的socket连接通道中写入该字节流,完成所述连接ID回复消息的发送。
在一些示例中,与客户端建立连接之后,还包括:监测与客户端的连接状态,具体为:
接收客户端发送的ping消息并创建一个ping回复消息;
根据所述ping回复消息生成所述ping回复消息对应的消息ID;
将所述ping回复消息转换为字节流,并向服务端的socket通道中写入该字节流,完成所述ping回复消息发送;
其中,将读取的所述ping消息对应的消息ID设置为所述ping回复消息的原消息ID。
本发明第三方面的实施例还提出了一种客户端,包括:
连接模块,用于与服务端建立连接;
发送模块,用于接收用户的请求消息,并将所述请求消息发送至服务端;
判断模块,用于判断所述请求消息是否为同步消息,并在所述请求消息为同步消息时,将处理所述请求消息的业务线程设置为阻塞等待状态,直到服务端返回所述请求消息对应的回复消息;
接收处理模块,用于接收服务端返回的回复消息,并在所述请求消息为同步消息时,将所述回复消息设置为所述请求消息的答复消息,通知所述业务线程结束阻塞等待状态;在所述请求消息为异步消息时,调用socket连接对象的数据处理方法对所述回复消息进行同步处理。
本发明提供的一种客户端,利用线程阻塞实现了异步通信方式下的同步等待,实现了与服务端之间的消息交互处理,通信效率较高,实现了同步与异步相结合的通信方式,满足不同场合的通信需求。
本发明第四方面的实施例还提出了一种服务端,包括:
连接模块,用于与客户端建立连接;
接收处理模块,用于接收客户端发送的请求消息,,并调用消息处理器对所述请求消息进行处理,得到回复消息,并返回回复消息,根据所述回复消息生成所述回复消息对应的消息ID;
发送模块,用于将所述回复消息发送至客户端;
其中,所述接收处理模块将读取的所述请求消息对应的消息ID设置为所述返回的回复消息的原消息ID。
本发明提供的一种服务端,实现了与服务端之间的消息交互处理,通信效率较高。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例1提供的一种消息交互处理方法流程示意图;
图2为本发明实施例2提供的一种消息交互处理方法流程示意图
图3为本发明实施例3提供的一种客户端结构示意图;
图4为本发明实施例4提供的一种客户端结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为实施例1一种消息交互处理方法的流程示意图,如图1所示,一种消息交互处理方法,应用于客户端,包括如下步骤:
步骤1:与服务端建立连接;
步骤2:根据用户输入的请求命令生成请求消息,将所述请求消息发送至服务端,并判断所述请求消息是否为同步消息,如果是,则将用于处理所述请求消息的业务线程设置为阻塞等待状态,进入步骤3,否则进入步骤4;
步骤3:接收从服务端返回的回复消息,将所述回复消息设置为所述请求消息的答复消息,通知所述业务线程结束阻塞等待状态,结束处理流程;
步骤4:接收从服务端返回的回复消息,并调用socket连接对象的数据处理方法对所述回复消息进行处理,结束处理流程。
本发明的实施例,利用线程阻塞实现了异步通信方式下的同步等待,实现了客户端与服务端之间的消息交互处理,通信效率较高,实现了同步与异步相结合的通信方式,满足不同场合的通信需求。
本发明的实施例中,所述步骤1的具体实现为:
步骤11:初始化,根据服务端的IP地址设置连接参数,建立连接socket通道,并向服务端发送连接请求,以使服务端接收到连接请求后生成所述客户端对应的连接ID;
步骤12:客户端生成获取连接ID请求消息,并通过所述socket通道向服务端发送获取连接ID请求消息;
步骤13:接收服务端返回的连接ID回复消息,并从所述连接ID回复消息中读取客户端的连接ID,建立连接成功;
其中,所述连接ID请求消息的消息ID生成规则为:
服务端IP地址:连接ID:X;
X为由1开始递增的变量,且初次发送连接ID请求消息时,所述连接ID为空。
通过客户端向服务端发送连接请求,可以方便服务端接收到连接请求后生成所述客户端对应的连接ID,并在客户端发送获取连接ID请求消息后,将客户端的连接ID返回至客户端,这样客户端与服务端即可建立连接,实现收发消息的功能。
另外,这里需要将建立连接的时间设为客户端的当前时间,实现客户端与服务端之间的时间同步。
如果客户端在设定的时间范围内没有接收到服务端返回的连接ID回复消息,则表明客户端与服务端之间连接失败,二者之间的消息传送出现异常。
优选实施例中,与服务端建立连接之后,还包括:监测与服务端的连接状态,具体为:
定期创建一个空的ping消息;
根据所述ping消息生成ping消息对应的消息ID;
向所述socket通道中写入所述ping消息和所述ping消息对应的消息ID,并等待接收从服务端返回的ping回复消息,如果接收到ping回复消息,且根据所述ping回复消息读取的原消息ID与所述ping消息对应的消息ID相同,则判定与服务端处于连接状态,否则判定与服务端处于断开连接状态;
其中,生成ping消息ID的生成规则具体为:
服务端IP地址:连接ID:X;
其中,X为由1开始递增的变量,且初次发送ping消息时,所述连接ID为空。
通过将所述ping回复消息读取的原消息ID与所述ping消息对应的消息ID进行比较,可以有效确保客户端接收到的ping回复消息为服务端针对自己发送的ping消息做出的回复消息,这样可以确保客户端与服务端之间准确连接,通过ping机制可以保证客户端与服务端之间活动状态的实时监视,确保客户端与服务端之间能够有效完成消息的交互处理。
特别地,如果客户端没有从服务端接收到ping回复消息,也表明客户端与服务端之间处于断开连接状态。
本发明的实施例中,所述步骤2中,发送请求消息的具体实现为:
步骤21:根据用户输入的请求命令生成请求消息,根据所述请求消息生成请求消息对应的消息ID,并创建请求消息上下文;
步骤22:判断所述请求消息是否为同步消息,如果是,则将所述业务线程设置为阻塞等待状态,并将所述请求消息上下文、请求消息对应的消息ID和处于阻塞状态的业务线程存储至等待回复消息队列中,否则不做处理;
步骤23:将所述请求消息存储至写消息队列中;
步骤24:从所述写消息队列中逐个取出所述请求消息,将取出的所述请求消息转换为字节流,并向客户端的socket通道中写入该字节流,再将所述请求消息从所述写消息队列中删除,完成所述请求消息发送;
其中,所述请求消息上下文包括业务线程、请求消息和返回消息,且初次发送请求消息时,所述返回消息为空,所述请求消息对应的消息ID和回复消息对应的消息ID均为从1开始递增的变量,且初次发送请求消息时,二者均为1。
通过判断所述请求消息是否为同步消息,并在请求消息为同步消息时将业务线程设置在阻塞等待状态,实现了异步通信方式下的同步等待,提高了通信效率。
本发明的实施例中,所述步骤3的具体实现为:
步骤31:接收从服务端返回的回复消息,读取所述回复消息中的原消息ID;
步骤32:判断所述回复消息中的原消息ID是否存在于所述等待回复消息队列中,如果是,则将所述回复消息设置为所述请求消息上下文的答复消息,通知所述业务线程结束阻塞等待状态,并从所述等待回复消息队列中删除对应的处于阻塞状态的业务线程,否则,直接进入步骤4。
通过读取所述回复消息中的原消息ID,可以判断所述回复消息是否为处于所述等待回复消息队列中的请求消息对应的回复消息,并在所述回复消息为处于所述等待回复消息队列中的请求消息对应的回复消息时,通知所述业务线程结束阻塞等待状态,实现了异步消息的同步等待,提高了通信效率。
需要指出的是,当在设定的时间范围内没有接收到从服务端返回的回复消息,则生成错误信息,并报错。提醒注意客户端与服务端间的出现消息传送故障。
本发明的实施例中,所述步骤4的具体实现为:
读线程接收从服务端返回的回复消息,读取回复消息中的数据信息,并将所述数据信息从字节流转换为消息格式,并调用socket连接对象的数据处理方法对消息格式的所述数据信息进行处理;其中,所述请求消息对应的消息ID为所述回复消息的原消息ID。
当所述请求消息为异步消息时,直接调用socket连接对象对回复消息中的消息格式的数据信息进行处理,可以满足异步通信的需求,提高通信效率,满足不同场合的通信需求。
图2为实施例2的一种消息交互处理方法的流程示意图,如图2所示,一种消息交互处理方法,应用于服务端,包括如下步骤:
步骤1:与客户端建立连接;
步骤2:接收客户端发送的请求消息,并调用消息处理器对所述请求消息进行处理,得到回复消息,并返回回复消息;
步骤3:根据所述回复消息生成所述回复消息对应的消息ID;
步骤4:将所述回复消息发送至客户端;
其中,将读取的所述请求消息对应的消息ID设置为所述返回的回复消息的原消息ID。
本发明的一种消息交互处理方法,通过并调用消息处理器对所述请求消息进行处理,可以针对所述请求消息生成对应的回复消息,并将请求消息的消息ID由所述回复消息带回至客户端,从而便于客户端准确的识别客户端接收,并对所述回复消息进行处理。比如,当所述请求消息为同步消息时,通知处理所述请求消息的业务线程结束阻塞等待状态,实现了异步消息的同步等待,当所述请求消息为异步消息时,直接调用socket连接对象对回复消息中的消息格式的数据信息进行处理,可以满足异步通信的需求,提高通信效率,满足不同场合的通信需求。
根据本发明实施例的一种消息交互处理方法,实现了客户端与服务端之间的消息交互处理,通信效率较高。
本实施例中,所述步骤1的具体实现为:
步骤11:接收客户端的连接请求,创建一个连接请求对象,所述连接请求对象根据所述连接请求生成客户端对应的连接ID;
步骤12:接收客户端发送的获取连接ID请求消息,根据所述连接ID创建一个返回用的连接ID回复消息;
步骤13:将所述连接ID回复消息转换为字节流,并向服务端的socket连接通道中写入该字节流,完成所述连接ID回复消息的发送。
通过创建连接请求对象来生成客户端对应的连接ID,便于在返回连接ID回复消息时带回客户端的连接ID,从而使得客户端与服务端之间准确建立连接。
优选实施例中,与客户端建立连接之后,还包括:监测与客户端的连接状态,具体为:
接收客户端发送的ping消息并创建一个ping回复消息;
根据所述ping回复消息生成所述ping回复消息对应的消息ID;
将所述ping回复消息转换为字节流,并向服务端的socket通道中写入该字节流,完成所述ping回复消息发送;
其中,将读取的所述ping消息对应的消息ID设置为所述ping回复消息的原消息ID。
根据客户端发送的ping消息创建一个ping回复消息,并在ping回复消息中将ping消息对应的消息ID带回至客户端,便于客户端准确识别所述ping回复消息针对的原ping消息,从而保证客户端与服务端之间活动状态的实时监视,确保客户端与服务端之间能够有效完成消息的交互处理。
图3为实施例3提供的一种客户端,包括:
连接模块,用于与服务端建立连接;
发送模块,用于接收用户的请求消息,并将所述请求消息发送至服务端;
判断模块,用于判断所述请求消息是否为同步消息,并在所述请求消息为同步消息时,将处理所述请求消息的业务线程设置为阻塞等待状态,直到服务端返回所述请求消息对应的回复消息;
接收处理模块,用于接收服务端返回的回复消息,并在所述请求消息为同步消息时,将所述回复消息设置为所述请求消息的答复消息,通知所述业务线程结束阻塞等待状态;在所述请求消息为异步消息时,调用socket连接对象的数据处理方法对所述回复消息进行同步处理。
本发明提供的一种客户端,利用线程阻塞实现了异步通信方式下的同步等待,实现了与服务端之间的消息交互处理,通信效率较高,实现了同步与异步相结合的通信方式,满足不同场合的通信需求。
本发明的实施例中,所述连接模块具体用于:初始化,根据服务端的IP地址设置连接参数,建立连接socket通道,并向服务端发送连接请求,以使服务端接收到连接请求后生成所述客户端对应的连接ID;客户端生成获取连接ID请求消息,并通过所述socket通道向服务端发送获取连接ID请求消息;接收服务端返回的连接ID回复消息,并从所述连接ID回复消息中读取客户端的连接ID,建立连接成功;其中,所述连接ID请求消息的消息ID生成规则为:
服务端IP地址:连接ID:X;
X为由1开始递增的变量,且初次发送连接ID请求消息时,所述连接ID为空。
通过客户端向服务端发送连接请求,可以方便服务端接收到连接请求后生成所述客户端对应的连接ID,并在客户端发送获取连接ID请求消息后,将客户端的连接ID返回至客户端,这样客户端与服务端即可建立连接,实现收发消息的功能。
优选实施例中,所述客户端还包括监测模块,用于在与服务端建立连接之后,监测与服务端的连接状态,具体为:定期创建一个空的ping消息;据所述ping消息生成ping消息对应的消息ID;向所述socket通道中写入所述ping消息和所述ping消息对应的消息ID,并等待接收从服务端返回的ping回复消息,如果接收到ping回复消息,且根据所述ping回复消息读取的原消息ID与所述ping消息对应的消息ID相同,则判定与服务端处于连接状态,否则判定与服务端处于断开连接状态;其中,生成ping消息ID的生成规则具体为:
服务端IP地址:连接ID:X;
其中,X为由1开始递增的变量,且初次发送ping消息时,所述连接ID为空。
通过将所述ping回复消息读取的原消息ID与所述ping消息对应的消息ID进行比较,可以有效确保客户端接收到的ping回复消息为服务端针对自己发送的ping消息做出的回复消息,这样可以确保客户端与服务端之间准确连接,通过ping机制可以保证客户端与服务端之间活动状态的实时监视,确保客户端与服务端之间能够有效完成消息的交互处理。
本发明实施例中,所述发送模块具体用于接收请求消息,根据所述请求消息生成请求消息对应的消息ID,并创建请求消息上下文;将所述请求消息存储至写消息队列中;从所述写消息队列中逐个取出所述请求消息,将取出的所述请求消息转换为字节流,并向客户端的socket通道中写入该字节流,再将所述请求消息从所述写消息队列中删除,完成所述请求消息发送;其中,所述请求消息上下文包括业务线程、请求消息和返回消息,且初次发送请求消息时,所述返回消息为空,所述请求消息对应的消息ID和回复消息对应的消息ID均为从1开始递增的变量,且初次发送请求消息时,二者均为1。
所述判断模块具体用于判断所述请求消息是否为同步消息,如果是,则将所述业务线程设置为阻塞等待状态,并将所述请求消息上下文、请求消息对应的消息ID和处于阻塞状态的业务线程存储至等待回复消息队列中,否则不做处理。通过判断所述请求消息是否为同步消息,并在请求消息为同步消息时将业务线程设置在阻塞等待状态,实现了异步通信方式下的同步等待,提高了通信效率。
本实施例中,所述接收处理模块具体用于接收从服务端返回的回复消息,读取所述回复消息中的原消息ID;判断所述回复消息中的原消息ID是否存在于所述等待回复消息队列中,如果是,则将所述回复消息设置为所述请求消息上下文的答复消息,通知所述业务线程结束阻塞等待状态,并从所述等待回复消息队列中删除对应的处于阻塞状态的业务线程,否则,直接直接调用socket连接对象对回复消息中的消息格式的数据信息进行处理。
通过读取所述回复消息中的原消息ID,可以判断所述回复消息是否为处于所述等待回复消息队列中的请求消息对应的回复消息,并在所述回复消息为处于所述等待回复消息队列中的请求消息对应的回复消息时,通知所述业务线程结束阻塞等待状态,实现了异步消息的同步等待,提高了通信效率。并且,如果所述请求消息为同步消息时,直接调用socket连接对象对回复消息中的消息格式的数据信息进行处理,可以满足异步通信的需求,提高通信效率,满足不同场合的通信需求。
图4为本发明实施例4提供的一种服务端,包括:
连接模块,用于与客户端建立连接;
接收处理模块,用于接收客户端发送的请求消息,并调用消息处理器对所述请求消息进行处理,得到回复消息,并返回回复消息,根据所述回复消息生成所述回复消息对应的消息ID;
发送模块,用于将所述回复消息发送至客户端;
其中,所述接收处理模块将读取的所述请求消息对应的消息ID设置为所述返回的回复消息的原消息ID。
本发明提供的一种服务端,实现了与服务端之间的消息交互处理,通信效率较高。
本发明的实施例中,所述连接模块具体用于接收客户端的连接请求,创建一个连接请求对象,所述连接请求对象根据所述连接请求生成客户端对应的连接ID;接收客户端发送的获取连接ID请求消息,根据所述连接ID创建一个返回用的连接ID回复消息;将所述连接ID回复消息转换为字节流,并向服务端的socket连接通道中写入该字节流,完成所述连接ID回复消息的发送。通过创建连接请求对象来生成客户端对应的连接ID,便于在返回连接ID回复消息时带回客户端的连接ID,从而使得客户端与服务端之间准确建立连接。
优选实施例中,所述服务端还包括监测模块,用于监测与客户端的连接状态,具体为:接收客户端发送的ping消息并创建一个ping回复消息;根据所述ping回复消息生成所述ping回复消息对应的消息ID;将所述ping回复消息转换为字节流,并向服务端的socket通道中写入该字节流,完成所述ping回复消息发送;其中,将读取的所述ping消息对应的消息ID设置为所述ping回复消息的原消息ID。根据客户端发送的ping消息创建一个ping回复消息,并在ping回复消息中将ping消息对应的消息ID带回至客户端,便于客户端准确识别所述ping回复消息针对的原ping消息,从而保证客户端与服务端之间活动状态的实时监视,确保客户端与服务端之间能够有效完成消息的交互处理。
本发明实施例中,所述接收处理模块具体用于接收客户端发送的请求消息,并调用消息处理器对所述请求消息进行处理,得到回复消息,并返回回复消息;根据所述回复消息生成所述回复消息对应的消息ID;其中,将读取的所述请求消息对应的消息ID设置为所述返回回复消息的原消息ID。通过并调用消息处理器对所述请求消息进行处理,可以针对所述请求消息生成对应的回复消息,并将请求消息的消息ID由所述回复消息带回至客户端,从而便于客户端准确的识别客户端接收,并对所述回复消息进行处理。比如,当所述请求消息为同步消息时,通知处理所述请求消息的业务线程结束阻塞等待状态,实现了异步消息的同步等待,当所述请求消息为异步消息时,直接调用socket连接对象对回复消息中的消息格式的数据信息进行处理,可以满足异步通信的需求,提高通信效率,满足不同场合的通信需求。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种消息交互处理方法,应用于客户端,其特征在于,包括如下步骤:
步骤1:与服务端建立连接;
步骤2:根据用户输入的请求命令生成请求消息,将所述请求消息发送至服务端,并判断所述请求消息是否为同步消息,如果是,则将用于处理所述请求消息的业务线程设置为阻塞等待状态,进入步骤3,否则进入步骤4;
步骤3:接收从服务端返回的回复消息,将所述回复消息设置为所述请求消息的答复消息,通知所述业务线程结束阻塞等待状态,结束处理流程;
步骤4:接收从服务端返回的回复消息,并调用socket连接对象的数据处理方法对所述回复消息进行处理,结束处理流程。
2.根据权利要求1所述的消息交互处理方法,其特征在于:所述步骤1的具体实现为:
步骤11:初始化,根据服务端的IP地址设置连接参数,建立连接socket通道,并向服务端发送连接请求,以使服务端接收到连接请求后生成所述客户端对应的连接ID;
步骤12:客户端生成获取连接ID请求消息,并通过所述socket通道向服务端发送获取连接ID请求消息;
步骤13:接收服务端返回的连接ID回复消息,并从所述连接ID回复消息中读取客户端的连接ID,建立连接成功;
其中,所述连接ID请求消息的消息ID生成规则为:
服务端IP地址:连接ID:X;
X为由1开始递增的变量,且初次发送连接ID请求消息时,所述连接ID为空。
3.根据权利要求1所述的消息交互处理方法,其特征在于:与服务端建立连接之后,还包括:监测与服务端的连接状态,具体为:
定期创建一个空的ping消息;
根据所述ping消息生成ping消息对应的消息ID;
向所述socket通道中写入所述ping消息和所述ping消息对应的消息ID,并等待接收从服务端返回的ping回复消息,如果接收到ping回复消息,且根据所述ping回复消息读取的原消息ID与所述ping消息对应的消息ID相同,则判定与服务端处于连接状态,否则判定与服务端处于断开连接状态;
其中,生成ping消息ID的生成规则具体为:
服务端IP地址:连接ID:X;
其中,X为由1开始递增的变量,且初次发送ping消息时,所述连接ID为空。
4.根据权利要求1所述的消息交互处理方法,其特征在于:所述步骤2中,发送请求消息的具体实现为:
步骤21:根据用户输入的请求命令生成请求消息,根据所述请求消息生成请求消息对应的消息ID,并创建请求消息上下文;
步骤22:判断所述请求消息是否为同步消息,如果是,则将所述业务线程设置为阻塞等待状态,并将所述请求消息上下文、请求消息对应的消息ID和处于阻塞状态的业务线程存储至等待回复消息队列中,否则不做处理;
步骤23:将所述请求消息存储至写消息队列中;
步骤24:从所述写消息队列中逐个取出所述请求消息,将取出的所述请求消息转换为字节流,并向客户端的socket通道中写入该字节流,再将所述请求消息从所述写消息队列中删除,完成所述请求消息发送;
其中,所述请求消息上下文包括业务线程、请求消息和返回消息,且初次发送请求消息时,所述返回消息为空,所述请求消息对应的消息ID和回复消息对应的消息ID均为从1开始递增的变量,且初次发送请求消息时,二者均为1。
5.根据权利要求4所述的消息交互处理方法,其特征在于:所述步骤3的具体实现为:
步骤31:读线程接收从服务端返回的回复消息,读取所述回复消息中的原消息ID;
步骤32:判断所述回复消息中的原消息ID是否存在于所述等待回复消息队列中,如果是,则将所述回复消息设置为所述请求消息上下文的答复消息,通知所述业务线程结束阻塞等待状态,并从所述等待回复消息队列中删除对应的处于阻塞状态的业务线程,否则,直接进入步骤4;
所述步骤4的具体实现为:
读线程接收从服务端返回的回复消息,读取回复消息中的数据信息,并将所述数据信息从字节流转换为消息格式,并调用socket连接对象的数据处理方法对消息格式的所述数据信息进行处理;
其中,所述请求消息对应的消息ID为所述回复消息的原消息ID。
6.一种消息交互处理方法,应用于服务端,其特征在于,包括如下步骤:
步骤1:与客户端建立连接;
步骤2:接收客户端发送的请求消息,并调用消息处理器对所述请求消息进行处理,得到回复消息,并返回回复消息;
步骤3:根据所述回复消息生成所述回复消息对应的消息ID;
步骤4:将所述回复消息发送至客户端;
其中,将读取的所述请求消息对应的消息ID设置为所述返回的回复消息的原消息ID。
7.根据权利要求6所述的消息处理方法,其特征在于:所述步骤1的具体实现为:
步骤11:接收客户端的连接请求,创建一个连接请求对象,所述连接请求对象根据所述连接请求生成客户端对应的连接ID;
步骤12:接收客户端发送的获取连接ID请求消息,根据所述连接ID创建一个返回用的连接ID回复消息;
步骤13:将所述连接ID回复消息转换为字节流,并向服务端的socket连接通道中写入该字节流,完成所述连接ID回复消息的发送。
8.根据权利要求6所述的消息处理方法,其特征在于:与客户端建立连接之后,还包括:监测与客户端的连接状态,具体为:
接收客户端发送的ping消息并创建一个ping回复消息;
根据所述ping回复消息生成所述ping回复消息对应的消息ID;
将所述ping回复消息转换为字节流,并向服务端的socket通道中写入该字节流,完成所述ping回复消息发送;
其中,将读取的所述ping消息对应的消息ID设置为所述ping回复消息的原消息ID。
9.一种客户端,其特征在于,包括:
连接模块,用于与服务端建立连接;
发送模块,用于接收用户的请求消息,并将所述请求消息发送至服务端;
判断模块,用于判断所述请求消息是否为同步消息,并在所述请求消息为同步消息时,将处理所述请求消息的业务线程设置为阻塞等待状态,直到服务端返回所述请求消息对应的回复消息;
接收处理模块,用于接收服务端返回的回复消息,并在所述请求消息为同步消息时,将所述回复消息设置为所述请求消息的答复消息,通知所述业务线程结束阻塞等待状态;在所述请求消息为异步消息时,调用socket连接对象的数据处理方法对所述回复消息进行同步处理。
10.一种服务端,其特征在于,包括:
连接模块,用于与客户端建立连接;
接收处理模块,用于接收客户端发送的请求消息,并调用消息处理器对所述请求消息进行处理,得到回复消息,并返回回复消息,根据所述回复消息生成所述回复消息对应的消息ID;
发送模块,用于将所述回复消息发送至客户端;
其中,所述接收处理模块将读取的所述请求消息对应的消息ID设置为所述返回的回复消息的原消息ID。
CN201710257914.XA 2017-04-19 2017-04-19 一种消息交互处理方法、客户端和服务端 Expired - Fee Related CN107147620B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710257914.XA CN107147620B (zh) 2017-04-19 2017-04-19 一种消息交互处理方法、客户端和服务端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710257914.XA CN107147620B (zh) 2017-04-19 2017-04-19 一种消息交互处理方法、客户端和服务端

Publications (2)

Publication Number Publication Date
CN107147620A true CN107147620A (zh) 2017-09-08
CN107147620B CN107147620B (zh) 2020-07-24

Family

ID=59774336

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710257914.XA Expired - Fee Related CN107147620B (zh) 2017-04-19 2017-04-19 一种消息交互处理方法、客户端和服务端

Country Status (1)

Country Link
CN (1) CN107147620B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967595A (zh) * 2017-10-30 2018-04-27 北京大数元科技发展有限公司 一种支持异步、同步计算的消息提醒方法及系统
CN108134824A (zh) * 2017-12-19 2018-06-08 深圳马可孛罗科技有限公司 一种旅行产品运行日志记录方法及系统
CN110290226A (zh) * 2019-08-12 2019-09-27 山东五牛技术服务有限责任公司 一种通用的客户端和服务端对接接口协议方法
CN110620778A (zh) * 2019-09-25 2019-12-27 北京简约纳电子有限公司 一种同时支持socket同步和异步通信方式的实现机制
CN110995797A (zh) * 2019-11-19 2020-04-10 湖北民族大学 多层b/s与c/s混合式软件系统、各层之间异步实时通信方法
CN111158610A (zh) * 2019-12-31 2020-05-15 苏州浪潮智能科技有限公司 一种同步设置缓存加速的方法、装置、设备及可读介质
CN111182065A (zh) * 2019-12-30 2020-05-19 深圳奇迹智慧网络有限公司 基于mqtt协议的消息处理方法、装置和计算机设备
CN111212085A (zh) * 2020-01-16 2020-05-29 厦门网宿有限公司 物联网平台同步调用的方法、物联网系统和网络设备
CN112099864A (zh) * 2020-09-24 2020-12-18 中国建设银行股份有限公司 一种异步数据的处理方法及装置
CN114844907A (zh) * 2022-05-07 2022-08-02 江苏苏宁银行股份有限公司 一种基于mq异步收发的银行交易高速低连接数实现方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101710869A (zh) * 2009-12-18 2010-05-19 中兴通讯股份有限公司 二层虚拟专用网故障的检测装置及方法
CN102404404A (zh) * 2011-09-07 2012-04-04 航天科工仿真技术有限责任公司 一种分布式web应用与远程设备消息通信方法
CN102546808A (zh) * 2012-01-17 2012-07-04 深圳天源迪科信息技术股份有限公司 服务端基于tcp的交互处理方法
CN103164273A (zh) * 2012-09-06 2013-06-19 佳都新太科技股份有限公司 一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法
CN104932932A (zh) * 2014-03-20 2015-09-23 腾讯科技(深圳)有限公司 一种业务异步处理方法、装置和系统
CN105245413A (zh) * 2015-09-24 2016-01-13 成都广达新网科技股份有限公司 一种eoc设备局端获取终端控制消息响应的方法
CN105391776A (zh) * 2015-10-20 2016-03-09 上海斐讯数据通信技术有限公司 长连接消息的通信方法及系统
CN106326016A (zh) * 2016-07-28 2017-01-11 武汉票据交易中心有限公司 一种多线程事件分发方法和系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101710869A (zh) * 2009-12-18 2010-05-19 中兴通讯股份有限公司 二层虚拟专用网故障的检测装置及方法
CN102404404A (zh) * 2011-09-07 2012-04-04 航天科工仿真技术有限责任公司 一种分布式web应用与远程设备消息通信方法
CN102546808A (zh) * 2012-01-17 2012-07-04 深圳天源迪科信息技术股份有限公司 服务端基于tcp的交互处理方法
CN103164273A (zh) * 2012-09-06 2013-06-19 佳都新太科技股份有限公司 一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法
CN104932932A (zh) * 2014-03-20 2015-09-23 腾讯科技(深圳)有限公司 一种业务异步处理方法、装置和系统
CN105245413A (zh) * 2015-09-24 2016-01-13 成都广达新网科技股份有限公司 一种eoc设备局端获取终端控制消息响应的方法
CN105391776A (zh) * 2015-10-20 2016-03-09 上海斐讯数据通信技术有限公司 长连接消息的通信方法及系统
CN106326016A (zh) * 2016-07-28 2017-01-11 武汉票据交易中心有限公司 一种多线程事件分发方法和系统

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967595B (zh) * 2017-10-30 2021-06-29 北京大数元科技发展有限公司 一种支持异步、同步计算的消息提醒方法及系统
CN107967595A (zh) * 2017-10-30 2018-04-27 北京大数元科技发展有限公司 一种支持异步、同步计算的消息提醒方法及系统
CN108134824A (zh) * 2017-12-19 2018-06-08 深圳马可孛罗科技有限公司 一种旅行产品运行日志记录方法及系统
CN110290226A (zh) * 2019-08-12 2019-09-27 山东五牛技术服务有限责任公司 一种通用的客户端和服务端对接接口协议方法
CN110620778A (zh) * 2019-09-25 2019-12-27 北京简约纳电子有限公司 一种同时支持socket同步和异步通信方式的实现机制
CN110620778B (zh) * 2019-09-25 2021-11-30 北京简约纳电子有限公司 一种同时支持socket同步和异步通信方式的方法
CN110995797B (zh) * 2019-11-19 2022-03-15 湖北民族大学 多层b/s与c/s混合式软件系统、各层之间异步实时通信方法
CN110995797A (zh) * 2019-11-19 2020-04-10 湖北民族大学 多层b/s与c/s混合式软件系统、各层之间异步实时通信方法
CN111182065A (zh) * 2019-12-30 2020-05-19 深圳奇迹智慧网络有限公司 基于mqtt协议的消息处理方法、装置和计算机设备
CN111158610A (zh) * 2019-12-31 2020-05-15 苏州浪潮智能科技有限公司 一种同步设置缓存加速的方法、装置、设备及可读介质
CN111158610B (zh) * 2019-12-31 2022-02-22 苏州浪潮智能科技有限公司 一种同步设置缓存加速的方法、装置、设备及可读介质
CN111212085A (zh) * 2020-01-16 2020-05-29 厦门网宿有限公司 物联网平台同步调用的方法、物联网系统和网络设备
CN111212085B (zh) * 2020-01-16 2022-11-22 厦门网宿有限公司 物联网平台同步调用的方法、物联网系统和网络设备
CN112099864A (zh) * 2020-09-24 2020-12-18 中国建设银行股份有限公司 一种异步数据的处理方法及装置
CN114844907A (zh) * 2022-05-07 2022-08-02 江苏苏宁银行股份有限公司 一种基于mq异步收发的银行交易高速低连接数实现方法
CN114844907B (zh) * 2022-05-07 2024-03-15 江苏苏宁银行股份有限公司 一种基于mq异步收发的银行交易高速低连接数实现方法

Also Published As

Publication number Publication date
CN107147620B (zh) 2020-07-24

Similar Documents

Publication Publication Date Title
CN107147620A (zh) 一种消息交互处理方法、客户端和服务端
US7505574B2 (en) Method and system for providing an improved communications channel for telephone conference initiation and management
CN102404404B (zh) 一种分布式web应用与远程设备消息通信方法
CN102355637A (zh) 一种移动终端即时通讯处理方法及装置
WO2009074079A1 (fr) Procédé et appareil de communication instantanée
CN102111419B (zh) 一种基于消息中间件的客户端自动重连方法
WO2020125775A1 (zh) 多服务方在线客服信息处理方法及装置
CN108494817A (zh) 数据传输方法、相关装置及系统
US9760865B2 (en) Multi-modal transcript unification in a collaborative environment
CN101656737A (zh) 一种实现多协议接入的方法及接口平台
CN105025023A (zh) 一种会议实现方法及会议系统
CN102143093A (zh) 即时通讯的方法、装置和系统
CN104579710B (zh) 碎片化异步会议系统
CN108683653A (zh) 一种基于WebSocket的主动式消息推送系统
CN107678867A (zh) 一种进行远程过程调用的方法及装置
CN107147543A (zh) 一种面向PC客户端的服务器的socket通信方法
CN107086951B (zh) 行业短信的传输方法、短信网关及行业短信接入网关
CN109217983A (zh) 一种工业物联网的作业终端通信协议设计方法
CN104735400A (zh) 一种视频监控系统中sip客户端访问rtsp媒体设备的方法及网关设备
CN104580231A (zh) 碎片化异步会议系统
CN104579712A (zh) 碎片化异步会议系统会议成员发布文字信息的方法
CN105515936A (zh) 消息通信的方法、服务器和系统
CN102457494B (zh) 一种基于sip信令提高监听成功率的方法和装置
CN104580778A (zh) 碎片化异步会议系统会议成员发布图片信息的方法
CN109831377A (zh) 一种不同即时通讯协议与sip协议之间互通的技术

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200611

Address after: 430000 1013, floor 1, Guanggu capital building, No.1, Minzu Avenue, Hongshan District, Wuhan City, Hubei Province

Applicant after: WUHAN JUFENG TIANXIA TECHNOLOGY Co.,Ltd.

Address before: 430074 capital building 1F, No. 1 National Road, East Lake New Technology Development Zone, Wuhan, Hubei, Optics Valley

Applicant before: WUHAN NOTE EXCHANGE CENTER Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200724

Termination date: 20210419