掌桥专利:专业的专利平台
掌桥专利
首页

消息处理方法、装置、设备及存储介质

文献发布时间:2023-06-19 09:30:39


消息处理方法、装置、设备及存储介质

技术领域

本申请涉及计算机前端技术领域,更具体的说,是涉及一种消息处理方法、装置、设备及存储介质。

背景技术

如图1所示,在输入法的中文模式下,在输入法的编辑框11中输入多个字符,一个字符可以为字母或汉字或韩文或日文等等,用户执行相应操作,例如点击回车键后,多个字符会同时输入至输入框12中,输入框12可以为客户端中的输入框,例如,输入框12可以为浏览器中的输入框。

假设输入框12中包括M个字符,M为大于或等于1的正整数,目前客户端会响应M次改变事件,例如,改变事件为获取输入框12中已有字符对应的超链接,那么,会执行M次获取输入框12中已有字符对应的超链接。多次执行改变事件会造成资源的浪费,例如,可能占用大量的网络资源,或,浪费电子设备中CPU的处理资源。

发明内容

有鉴于此,本申请提供了一种消息处理方法、装置、设备及存储介质,以克服现有技术中在输入法的中文模式下输入多个字符对应执行多次改变事件造成资源浪费的问题。

为实现上述目的,本申请提供如下技术方案:

一种消息处理方法,所述方法包括:

从消息队列中获取一个未处理的输入字符消息,其中,一个所述输入字符消息对应针对输入框输入的一个字符;

响应所述输入字符消息,将所述输入字符消息对应的字符输入至所述输入框;

若获得表征所述输入框中的字符发生变化的改变事件,检测所述消息队列中是否存储有未处理的输入字符消息;

若所述消息队列中存储有未处理的输入字符消息,不处理所述改变事件,返回所述从消息队列中获取一个未处理的输入字符消息步骤;

若所述消息队列中未存储有未处理的输入字符消息,响应所述改变事件。

一种消息处理装置,包括:

获取模块,用于从消息队列中获取一个未处理的输入字符消息,其中,一个所述输入字符消息对应针对输入框输入的一个字符;

输入模块,用于响应所述输入字符消息,将所述输入字符消息对应的字符输入至所述输入框;

检测模块,用于若获得表征所述输入框中的字符发生变化的改变事件,检测所述消息队列中是否存储有未处理的输入字符消息;

处理模块,用于若所述消息队列中存储有未处理的输入字符消息,不处理所述改变事件,触发所述获取模块;

响应模块,用于若所述消息队列中未存储有未处理的输入字符消息,响应所述改变事件。

一种电子设备,包括:

存储器,用于存储程序;

处理器,用于执行所述程序,所述程序具体用于:

从消息队列中获取一个未处理的输入字符消息,其中,一个所述输入字符消息对应针对输入框输入的一个字符;

响应所述输入字符消息,将所述输入字符消息对应的字符输入至所述输入框;

若获得表征所述输入框中的字符发生变化的改变事件,检测所述消息队列中是否存储有未处理的输入字符消息;

若所述消息队列中存储有未处理的输入字符消息,不处理所述改变事件,返回所述从消息队列中获取一个未处理的输入字符消息步骤;

若所述消息队列中未存储有未处理的输入字符消息,响应所述改变事件。

一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述任一项所述的消息处理方法中的各个步骤。

经由上述的技术方案可知,本申请提供了一种消息处理方法,若在输入法的中文模式下用户同时在输入框中输入多个字符,那么,消息队列中会存储多个字符输入消息,由于每响应一次输入字符消息,便会将输入字符消息对应的字符输入至输入框,输入框中的内容发生变化后,会产生一个改变事件,若消息队列中存储多个字符输入消息,则会产生多个改变事件。本申请实施例,在获得改变事件后,若检测消息队列还存储有未处理的输入字符消息,那么不处理该改变事件;若所述消息队列中未存储有未处理的输入字符消息,说明消息队列中存储的多个输入字符消息均已处理完毕,因此,可以响应该改变事件,即本申请实施例是在将多个字符均写入输入框后,响应一次改变事件,该改变事件是对输入框输入的所有字符而言的,符合用户的需求,且不必响应多次改变事件,节省了网络资源。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的一种用户界面示意图;

图2为本申请实施例提供的相关技术的一种实现方式的示意图;

图3为本发明实施例提供的一种实施环境的架构图;

图4a至图4c分别为本申请实施例提供的响应改变事件的一种实现方式的示意图;

图5为本申请实施例提供的消息处理方法的一种实现方式的流程图;

图6为本申请实施例提供的消息处理方法的一种实现方式的示意图;

图7为本发明实施例提供的消息处理装置的一种实现方式的结构图;

图8为本发明实施例提供的电子设备的一种实现方式的结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请提供了消息处理方法、装置、设备及存储介质。

在对本申请实施例提供的技术方案进行详细介绍之前,这里先对本申请实施例涉及的相关技术和实施环境进行介绍。

首先对本申请实施例涉及的相关技术进行介绍。

如图1所示,为本申请实施例提供的一种用户界面示意图。

在图1中,在输入法的中文模式下输入多个字符,例如,在输入法的编辑框11中输入“hsdz”,用户执行相应操作,例如点击回车键后,多个字符会同时输入至输入框12中。

应当注意的是,用户需要的是多个字符,不是多个字符对应的中文文字。如图1所示,用户需要的是“hsdz”四个字符,而不是四个字符对应的例如“恒生电子”、“还是打字”等文字。

示例性的,输入框12可以为关键词输入框,或,超链接输入框。

示例性的,输入框12可以为客户端中的输入框,客户端可以为应用程序客户端或网页版客户端。

例如,客户端可以为即时通信客户端、新闻客户端、短视频客户端等任一种客户端。

示例性的,上述输入法可以为电子设备安装的输入法应用程序,或者,为客户端中携带的输入法。

安装有客户端的电子设备可以为可与用户通过键盘、触摸板、触摸屏、遥控器或手写设备等一种或多种方式进行人机交互的电子产品,例如,手机、平板电脑、掌上电脑、手提电脑、个人计算机、可穿戴设备、智能电视等。

用户可以通过电子设备的输入装置(例如,键盘、触摸板、触摸屏、遥控器或手写设备等任一个)向电子设备输入一个或多个字符。

若输入装置接收到一个或多个字符,例如,键盘上有按键被按下时,会产生按键对应字符的输入字符消息,多个输入字符消息会存储至消息队列中。

下面对客户端处理输入字符消息以及在输入框中输入字符产生的改变事件的过程进行说明。

针对每一输入字符消息,客户端从消息队列中获取并响应一个输入字符消息,将输入字符消息对应的字符写入输入框12中。由于输入框包含的内容发生改变,输入框会生成改变事件,客户端处理改变事件;客户端再次从消息队列中获取并响应另一输入字符消息,将输入字符消息对应的字符写入输入框12,输入框生成改变事件,进而客户端处理改变事件;然后客户端会获取并响应又一输入字符消息,如此反复,直到消息队列中的输入字符消息全部响应完毕,且输入框12生成的所有改变事件也都一一处理完毕。

下面举例对客户端处理输入字符消息以及在输入框中输入字符产生的改变事件的过程进行说明,如图2所示,为本申请实施例提供的相关技术的一种实现方式的示意图。

假设在步骤S201中用户在输入法中文模式下输入英文字符“hsdz”,在步骤S202中安装有客户端的电子设备首先将“hsdz”这四个字符分别对应的输入字符消息“h的输入字符消息”、“s的输入字符消息”、“d的输入字符消息”以及“z的输入字符消息”存储至消息队列中。

在步骤S203中客户端从消息队列中获取“h的输入字符消息”并响应该输入字符消息,将字符“h”写入输入框12中,由于输入框12中的内容发生变化,在步骤S204中输入框12会生成一个改变事件,用以通知客户端输入框12中包含的字符发生变更,然后在步骤S205中客户端处理该改变事件,即基于输入框包含的所有字符(此时为h)进行相应处理,如获取输入框内包含的所有字符进行检索得到包含这些字符的超链接。

在处理完字符“h”产生的改变事件后,进入步骤S206从消息队列中获取并响应“s的输入字符消息”,将字符“s”写入输入框12中,由于输入框12中的内容发生变化,在步骤S207中输入框12会生成一个改变事件,在步骤S208中客户端处理该改变事件,基于输入框包含的所有字符(此时为hs)进行相应处理。

在处理完字符“s”产生的改变事件后,进入步骤S209从消息队列中获取并响应“d的输入字符消息”,将字符“d”写入输入框12中,由于输入框12中的内容发生变化,在步骤S210中输入框12会生成一个改变事件,在步骤S211中客户端处理该改变事件,基于输入框包含的所有字符(此时为hsd)进行相应处理。

在处理完字符“d”产生的改变事件后,进入步骤S212从消息队列中获取并响应“z的输入字符消息”,将字符“z”写入输入框12中,由于输入框12中的内容发生变化,在步骤S213中输入框12会生成一个改变事件,在步骤S214中客户端处理该改变事件,基于输入框包含的所有字符(此时为hsdz)进行相应处理。

可以理解的是,用户想要得到的结果是针对“hsdz”进行相应处理的结果,例如,获得包含hsdz的超链接。上述技术方案中,由于针对每一个字符对应的改变事件均进行处理,造成了资源的浪费,例如,可能占用大量的网络资源,或,浪费电子设备中CPU的处理资源。

示例性的,电子设备的操作系统可以为Windows操作系统。

在相关技术方案中有两种技术方案可以解决上述响应多次改变事件的技术问题。

第一种方案:利用定时器设置触发改变事件的处理时间,具体步骤包括:

将多个字符分别对应的输入字符消息存储至消息队列中,客户端从消息队列中获取并响应一个未处理的输入字符消息,将输入字符消息对应的字符写入输入框12中,由于输入框包含的内容发生改变,输入框会生成改变事件,若当前时间未到达处理时间,返回客户端从消息队列中获取并响应一个未处理的输入字符消息步骤,若当前时间到达处理时间,则响应该改变事件。

例如,假设定时器设置的处理改变事件的时间间隔为0.5秒,每响应一个输入字符消息耗费0.125秒。当用户输入“hsdz”四个字符时,输入字符产生的输入字符消息被放至消息队列中,客户端从消息队列中首先获取“h的输入字符消息”,响应h的输入字符消息后,输入框中出现字符h,触发输入框生成改变事件,判断当前时间是否到达处理时间(假设以0秒开始计时),由于当前时间为0.125秒,尚未到达处理时间0.5秒,因此继续从消息队列中获取下一个未处理的输入字符消息,即“s的输入字符消息”,重复上述操作,直到消息队列中“z的输入字符消息”被取出并响应完毕,触发输入框生成改变事件,此时由于当前时间正好到达0.5秒,因此响应该改变事件。

需要说明的是,在检测到相应操作(例如点击回车键)之前,在输入法的中文模式下输入的多个字符,是位于输入法的编辑框11中的。在检测到相应操作之后,对于用户而言,多个字符同时出现在输入框12中。即存储至消息队列中的多个输入字符消息,在获取到相应操作(例如点击回车键)之前,是在输入法的编辑框11中输入的所有字符分别对应的输入字符消息。

在非中文模式下,通过输入法输入一个字符后,将该字符对应的输入字符消息存储至消息队列中,从消息队列中获得并响应该输入字符消息,处理该字符对应的改变事件后,才能将用户输入的下一个字符对应的输入字符消息存储至消息队列,此时消息队列中仅存储有此次输入的字符对应的输入字符消息,同样,从消息队列中获得并响应此次输入字符对应的输入字符消息,处理该字符对应的改变事件,依次类推,直到用户不再输入新的字符。

所以,在非中文模式下输入字符,消息队列中存储的输入字符消息会随着字符的不断输入,而不断变化。由于一个客户端对应一个缓存,在处理一次改变事件的同时会将输入框内包含的所有字符写入缓存中,故每处理完一次改变事件,其缓存中的内容都会被替换为当前输入框中包含的字符内容。

例如,用户在非中文模式下输入hsdz。当用户输入字符“h”时,将h对应的输入字符消息存储至消息队列中,客户端响应完“h的输入字符消息”后,此时输入框中的内容为“h”,客户端继续响应字符h对应的改变事件,并将当前输入框中的内容“h”写入缓存中(假设之前缓存中的数据内容为空),此时缓存中的内容为“h”;用户输入字符“s”,将字符s对应的输入字符消息存储至消息队列,此时消息队列中仅存储有“s的输入字符消息”,客户端响应“s的输入字符消息”,此时输入框中的内容为“hs”,客户端继续响应字符s对应的改变事件,将当前输入框中的内容“hs”写入缓存中,此时缓存中的“h”数据被替换成“hs”;以此类推。

上述技术方案存在如下技术问题:

采用第一种方案延迟处理改变事件的时间时,当在输入法的非中文模式(如英文模式、输入数字、输入特殊符号等模式)下,或,输入法的中文模式下连续输入多个字符且输入频率较快时,会存在当前时间到达上述处理时间之前,字符就已输入完毕的情况,或,存在当前时间到达上述处理时间时,字符还没有输入完毕的情况,导致客户端无法处理输入最后一个字符对应的改变事件。针对上述情况,在不同的输入模式下具体可以分为如下四种情况:

情况一:在输入法的非中文模式下输入字符,在当前时间到达处理改变事件的处理时间之前,字符已输入完毕。

在这种情况下处理每个字符对应的改变事件时,由于定时时间未到,上一个字符输入触发的改变事件未处理就继续输入下一个字符以及获取下一个字符对应的输入字符消息,只有在当前时间到达处理改变事件的处理时间时,才处理一次改变事件,因此若全部字符输入完毕后,当前时间未到达处理时间,那么最后一个字符对应的改变事件就无法得到处理。

假设处理改变事件的时间间隔为0.6秒,即每0.6秒处理一次改变事件。假设用户在非中文模式下输入zhang,输入zhang共耗费0.5秒的时间,由于当前时间距离处理时间(假设以0秒开始计时)0.6秒还有0.1秒,导致输入最后一个字符g后,无法处理g字符对应的改变事件。

情况二:在输入法的非中文模式下输入字符,在当前时间到达处理改变事件的处理时间时,字符尚未输入完毕。

在这种情况下由于当前时间到达处理改变事件的处理时间时,用户还未输入完毕多个字符,只能得到到达处理时间时输入框内所包含的字符对应的处理结果,无法处理在处理时间以后输入的一个或多个字符对应的改变事件,即无法得到用户输入的完整字符串对应的处理结果。

假设处理改变事件的时间间隔为0.6秒,即每0.6秒处理一次改变事件。假设用户在非中文模式下输入zhang,输入zhang需要耗费0.8秒的时间,也就是说,在用户还没有输入完全部字符时,当前时间已经到达处理时间(假设以0秒开始计时)0.6秒,假设此时输入框包括“zhan”,那么,针对“zhan”执行一次改变事件,在最后一个字符g输入完毕后,由于未达到下一个处理时间1.2s,导致最后一个字符g对应的改变事件无法得到处理,即无法得到zhang对应的处理结果。

情况三:在输入法的中文输入模式下连续输入多个字符且输入频率较快,在当前时间到达处理改变事件的处理时间之前,字符已输入完毕。

由于在输入法的中文模式下输入的多个字符,是位于输入法的编辑框11中的,在检测到相应操作之后(例如点击回车键),多个字符同时出现在输入框12中,才产生一个改变事件。当用户输入频率较快时,会存在当前时间到达处理改变事件的处理时间之前,字符就已输入完毕的情况,那么在用户输入完字符串,输入框得到多个字符的时候,由于处理改变事件的处理时间未到,用户输入多个字符产生的改变事件无法得到处理,因此得不到当前输入框内包含字符触发改变事件的处理结果。

情况四:在输入法的中文输入模式下连续输入多个字符且输入频率较快,在当前时间到达处理改变事件的处理时间时,字符尚未输入完毕。

在当前时间到达处理改变事件的处理时间时,若客户端还未响应完毕用户输入的所有字符分别对应的输入字符消息,即此时输入框仅包括部分字符(部分字符针对用户输入的完整字符串而言),那么只能得到到达处理时间时输入框内所包含的部分字符对应的改变事件的处理结果,在当前时间到达处理时间以后,客户端响应剩余字符对应的输入字符消息,输入框中包括用户输入的完整字符串,但是由于下一个处理时间未达到,所以无法得到用户输入的完整字符串对应的处理结果。

第二种方案:先将多个字符输入到一个容器中,客户端检测容器中是否具有字符输入结束符,若检测到字符输入结束符,确定多个字符全部输入完毕,将容器中的多个字符同时拷贝至输入框中,由于输入框包含的内容发生改变,输入框会生成改变事件,客户端响应该改变事件。

示例性的,所述字符输入结束符包括但不限于回车、空格、数字、特殊字符等。

上述技术方案存在如下技术问题:采用第二种方案获取容器内的字符时,需要客户端能够识别字符输入结束符,由于不同输入法的字符输入结束符不同,如果不能正确识别字符输入结束符,就不能将容器包含的多个字符拷贝至输入框中,也不能响应改变事件。

即使客户端能够识别所有的输入法包含的所有字符输入结束符,但由于字符输入结束符也包括了数字、特殊字符等,所以可能会判断不了数字或特殊字符是正常输入还是字符输入结束符,可能出现误操作,若将数字或特殊字符均作为字符输入结束符,还是会出现多次响应改变事件的情况。

综上,本申请实施例提供了一种消息处理方法,在输入法的中文模式下,若同时输入多个字符,仅在将多个字符均输入至输入框后,响应一次改变事件,不会出现第一种方案中无法响应改变事件或在多个字符未完全输入至输入框时提前响应改变事件的情况;因为本申请无需检测字符输入结束符,所以不会出现第二种技术方案由于误操作出现多次响应改变事件的情况,或者,由于无法识别字符输入结束符,导致的无法响应改变事件的情况。

下面对本申请实施例涉及的实施环境进行说明。

本申请实施例涉及的实施环境有多种,本申请实施例提供但不限于以下两种。

第一种实施环境:如图3所示,为本发明实施例提供的一种实施环境的架构图。如图3所示,下述消息处理方法可以应用于该实施环境中,该实施环境包括:一个或多个终端设备31以及电子设备32。

其中,终端设备31可以为任何一个可与用户通过键盘、触摸板、触摸屏、遥控器或手写设备等一种或多种方式进行人机交互的电子产品,例如,手机、平板电脑、掌上电脑、手提电脑、个人计算机、可穿戴设备、智能电视等。

图3仅仅是一种示例,实际应用中终端设备31的数量可以按照实际需求设定,图3中以手提电脑为例示出了一个终端设备31。

可选的,电子设备32可以为服务器,该服务器可以是一台服务器,也可以是由若干台服务器组成的服务器集群,或者是一个云计算服务中心。

应注意的是,图3中以电子设备32为服务器为例进行说明,但并不限定电子设备32为服务器。

可选的,终端设备31与电子设备32可以通过无线网络建立连接并进行通信。

可选的,终端设备31与电子设备32为同一设备;可选的,终端设备31与电子设备32为不同的设备。

终端设备31,用于从消息队列中获取未处理的输入字符消息,响应该输入字符消息,将输入字符消息对应的字符输入至输入框中,获得表征输入框中的字符发生变化的改变事件,在消息队列中未存储有未处理的输入字符消息的情况下,响应改变事件,否则,返回步骤从消息队列中获取未处理的输入字符消息。

终端设备31,还用于在处理改变事件时,向电子设备32发送访问请求。

例如,用户在终端设备31展示的输入框中在输入法的中文模式下输入“恒生电子”四个中文字符,消息队列中会存储有“恒的输入字符消息”、“生的输入字符消息”、“电的输入字符消息”和“子的输入字符消息”,终端设备31仅处理字符串“恒生电子”对应的改变事件,例如,针对输入框中包含的所有字符“恒生电子”进行检索,得到包含这些字符的链接地址,向电子设备32发送访问包含“恒生电子”网站的请求。

可选的,终端设备31上安装有应用程序客户端或网页版客户端,可以基于客户端展示的用户界面的输入框输入字符。

可选的,上述客户端可以为浏览器客户端,可以通过浏览器展示的网页版客户端的用户界面的输入框输入字符。

可选的,上述客户端可以为搜索引擎客户端。

电子设备32,用于响应该访问请求,将访问结果反馈至终端设备31。

终端设备31,还用于接收到访问结果后,展示所述访问网站的页面。

第二种实施环境:本申请实施例涉及的实施环境包括:终端设备31。

终端设备31,用于从消息队列中获取未处理的输入字符消息,响应该输入字符消息,将输入字符消息对应的字符输入至输入框中,获得表征输入框中的字符发生变化的改变事件,在消息队列中未存储有未处理的输入字符消息的情况下,响应改变事件,否则,返回步骤从消息队列中获取未处理的输入字符消息。

终端设备31,还用于响应改变事件,执行相应操作,例如,对下拉框中的数据进行修改。

如图4a至图4c所示,分别为本申请实施例提供的响应改变事件的一种实现方式的示意图。

需要说明的是,在输入框中的内容发生变化时才会生成改变事件,其中改变事件可以对应一个可输入字符的输入框,每当输入框中包含的字符发生变化时,就会触发生成一个改变事件,响应此次改变事件后,输入框对应的下拉框中会出现包含输入框中的所有字符的名称列表选项,以供用户选择。

以填写工学学科门类时在提供的一级学科输入框中输入中文字符为例进行说明。

由图4a可以看出,输入框12中没有字符,当用户在输入法的中文输入模式下在输入框12中输入“科学”时,获得“科”对应的输入字符消息,以及“学”对应的输入字符消息,并存储至消息队列。从消息队列中获取并响应“科”对应的输入字符消息,将“科”写入输入框12,输入框12包含的内容发生变化,生成改变事件,由于消息队列还存储有未处理的输入字符消息,因此,不处理该改变事件,从消息队列中获取并响应“学”对应的输入字符消息,将“学”写入输入框12,输入框12包含的内容发生变化,此时为“科学”,生成改变事件,由于消息队列中未存储有未处理的输入字符消息,所以响应该改变事件。

如图4b所示,输入框12中包括“科学”。响应改变事件后,下拉框41展示包含“科学”字符的名称列表选项,用户可以选择名称列表选项中任一个一级学科的名称,假设用户选择的“电子科学与技术”,那么,如图4c所示,输入框12会显示用户选择的“电子科学与技术”。

下面结合上述实施环境对本申请提供的消息处理方法、装置、设备及存储介质进行说明。

如图5所示,为本申请实施例提供的消息处理方法的一种实现方式的流程图,该方法包括:

步骤S501:从消息队列中获取一个未处理的输入字符消息。

其中,一个所述输入字符消息对应针对输入框输入的一个字符。

在一可选实施例中,从消息队列中获取输入字符消息的顺序是遵循消息队列先入先出的原则,即将先输入的字符对应的输入字符消息放至消息队列的队首,在从消息队列中获取输入字符消息时也是先获取位于队首的输入字符消息。

示例性的,从消息队列中获得一个输入字符消息后,可以将该输入字符消息从消息队列中删除,所以存储在消息队列中的输入字符消息都是未被处理过的。

示例性的,从消息队列中获得一个输入字符消息后,可以设置该输入字符消息的状态为已处理状态;未获取过的输入字符消息的状态设置为未处理状态。

在一可选实施例中,本申请实施例将“在输入法的中文模式下连续输入多个字符与在连续输入多个字符后执行一次相应操作”称为“一次输入操作”。

假设用户在中文模式下连续输入多个字符的中间执行一次相应操作(例如点击回车键),以相应操作为媒介,分为第一次输入操作和第二次输入操作;对于第一次输入操作而言,会将该次输入操作中输入的多个字符分别对应的输入字符消息存储至消息队列中,在处理完第一次输入操作中的多个字符对应的改变事件后,将第二次输入操作中的多个字符分别对应的输入字符消息存储至消息队列中,此时消息队列中仅存储第二次输入操作的多个字符分别对应的输入字符消息。

即消息队列中仅存储有一次输入操作中的多个字符分别对应的输入字符消息,不会同时存储多次输入操作分别对应的多个输入字符消息。

例如,用户在中文模式下输入字符的过程中执行过一次相应操作,此时消息队列会将输入的多个字符以相应操作为媒介分为两次输入操作分别对应的多个字符。假设第一次输入操作的字符为“abc”,对应“a的输入字符消息”、“b的输入字符消息”和“c的输入字符消息”,在存储至消息队列的同时将其均设置为未处理状态。然后客户端从消息队列中获取一个未处理状态的“a的输入字符消息”,响应完后“a的输入字符消息”的状态变更为已处理状态。当第一次输入操作中的多个字符“abc”均被处理完毕后,才会将第二次输入操作中的字符“def”分别对应的输入字符消息存储至消息队列中,需要注意的是,此时消息队列中仅存储第二次输入操作中的字符“def”分别对应的输入字符消息,即“d的输入字符消息”、“e的输入字符消息”和“f的输入字符消息”。

步骤S502:响应所述输入字符消息,将所述输入字符消息对应的字符输入至所述输入框。

步骤S503:若获得表征所述输入框中的字符发生变化的改变事件,检测所述消息队列中是否存储有未处理的输入字符消息。

在将字符输入至输入框时,由于输入框中的内容发生变化,如增加了一个字符,此时输入框会生成表征所述输入框中的字符发生变化的改变事件。

在一可选实施例中,当获取到改变事件时,暂时先不处理改变事件,而是检测消息队列中是否还有未处理的输入字符消息,处理完消息队列中所有输入字符消息后再处理改变事件。

步骤S504:若所述消息队列中存储有未处理的输入字符消息,不处理所述改变事件,返回步骤S501。

可以理解的是,当消息队列中存在未处理的输入字符消息时,说明还没有获取到用户输入的多个字符,因此不处理此次输入字符消息对应的字符触发生成的改变事件,而是返回步骤S501中获取未处理的输入字符消息响应并处理,直到消息队列中的输入字符消息都被处理完毕。

步骤S505:若所述消息队列中未存储有未处理的输入字符消息,响应所述改变事件。

在一可选实施例中,响应改变事件后处理改变事件的过程为基于输入框内包含的所有字符进行相应处理,具体处理方式可以为访问网站、访问数据库、修改下拉框中的数据等等,本申请实施例并不对此进行限定。

本申请提供了一种消息处理方法,若在输入法的中文模式下用户同时在输入框中输入多个字符,那么,消息队列中会存储多个字符输入消息,由于每响应一次输入字符消息,便会将输入字符消息对应的字符输入至输入框,输入框中的内容发生变化后,会产生一个改变事件,若消息队列中存储多个字符输入消息,则会产生多个改变事件。本申请实施例,在获得改变事件后,若检测消息队列还存储有未处理的输入字符消息,那么不处理该改变事件;若所述消息队列中未存储有未处理的输入字符消息,说明消息队列中存储的多个输入字符消息均已处理完毕,因此,可以响应该改变事件,即本申请实施例是在将多个字符均写入输入框后,响应一次改变事件,该改变事件是对输入框输入的所有字符而言的,符合用户的需求,且不必响应多次改变事件,节省了网络资源。

与相关技术相比,本申请实施例在输入法的中文模式下,若同时输入多个字符,仅在将多个字符均输入至输入框后,响应一次改变事件,不会出现第一种方案中无法响应改变事件或在多个字符未完全输入至输入框时提前响应改变事件的情况;因为本申请无需检测字符输入结束符,所以不会出现第二种技术方案由于误操作出现多次响应改变事件的情况,或者,由于无法识别字符输入结束符,导致无法响应改变事件的情况。

在一可选实施例中,步骤S505中若所述消息队列中未存储有未处理的输入字符消息,响应所述改变事件的实现方式为:

步骤一:若所述消息队列中未存储有未处理的输入字符消息,获取所述输入框对应的缓存中存储的字符串。

示例性的,一个客户端对应一个缓存。在处理改变事件的同时会将当前输入框内包含的字符写入缓存中,故每处理完一次改变事件,其缓存中的内容都会被替换为当前输入框中包含的字符内容。

可选的,所述缓存中存储的字符串可以为空,也可以为上一次处理改变事件后当时输入框内包含的字符串。

例如,用户在中文模式下输入多个字符hsdz。由于中文模式下连续生成多个输入字符消息,故先将这四个字符对应的输入字符消息(“h的输入字符消息”、“s的输入字符消息”、“d的输入字符消息”、“z的输入字符消息”)存储至消息队列中,然后客户端从消息队列中获取“h的输入字符消息”,响应完后,此时输入框中的内容为“h”,检测到消息队列中存储有未处理的输入字符消息(“s的输入字符消息”、“d的输入字符消息”、“z的输入字符消息”),客户端暂不处理字符h对应的改变事件,继续获取消息队列中未处理的“s的输入字符消息”,并响应,将字符s写入输入框中,此时输入框中包含的字符为“hs”,重复检测消息队列中是否存储有未处理的输入字符消息并处理,直到消息队列中未存储有未处理的输入字符消息(即“hsdz”对应的四个输入字符消息均被处理完毕)时,获取所述输入框对应的缓存中存储的字符串。如果之前没有处理过改变事件,那么缓存中存储的字符串是为空的;如果在处理改变事件之前已经处理过一次改变事件,那么缓存中存储的字符串为上一次处理改变事件后当时输入框内包含的字符串。

步骤二:若所述缓存中存储的字符串与所述输入框中的字符串不相同,响应所述改变事件。

示例性的,缓存中存储的字符串与输入框中的字符串不相同,说明尚未响应过改变事件,因为在响应改变事件后,会将当前输入框内包含的字符串写入缓存中进行存储。

步骤三:将所述缓存中存储的字符串替换为所述输入框中的字符串。

对步骤一中的例子继续进行说明。当消息队列中未存储有未处理的输入字符消息(即“hsdz”对应的四个输入字符消息均被处理完毕)时,如果是第一次处理改变事件,由于之前没有将当前输入框内包含的字符写入缓存,那么缓存中存储的字符串与输入框中的字符串不同,在处理改变事件之后,缓存中存储的字符串被输入框中的字符串例如“hsdz”所替代。

如果在处理改变事件之前已经处理过一次改变事件(假设为“wljs”对应的改变事件),那么缓存中存储的字符串为上一次处理改变事件后输入框内包含的字符串(wljs),因此在处理此次改变事件之后,将缓存中存储的字符串(wljs)替换为当前输入框中包含的字符(hsdz)。

在一可选实施例中,不处理改变事件的实现方式有多种,本申请实施例提供但不限于以下两种。

第一种实现方式:若所述消息队列中存储有未处理的输入字符消息,拒绝响应并丢弃所述改变事件。

可以理解的是,当消息队列中存在未处理的输入字符消息时,说明还没获取到用户输入的完整字符串,因此暂时先不处理当前字符输入触发生成的改变事件,即拒绝响应并丢弃此次改变事件,返回所述从消息队列中获取一个未处理的输入字符消息步骤,继续获取消息队列中未处理的输入字符消息。

例如,假设用户输入的字符为“zhang”,消息队列中存储有“z的输入字符消息”、“h的输入字符消息”、“a的输入字符消息”、“n的输入字符消息”、“g的输入字符消息”。在响应“z的输入字符消息”后,将字符z写入输入框中,得到一个改变事件,此时消息队列中存在未处理的“h的输入字符消息”、“a的输入字符消息”、“n的输入字符消息”、“g的输入字符消息”,还没获取到用户输入的完整字符串,所以拒绝响应并丢弃该改变事件,从消息队列中获取下一个未处理的输入字符消息,即“h的输入字符消息”,响应“h的输入字符消息后,输入框产生一个改变事件,由于消息队列中仍存储有未处理的输入字符消息“a的输入字符消息”、“n的输入字符消息”、“g的输入字符消息”,因此拒绝响应并丢弃该改变事件,重复检测消息队列中是否存储有未处理的输入字符消息并对其进行处理的步骤,直到消息队列中未存储有未处理的输入字符消息。

第二种实现方式:若所述消息队列中未存储有未处理的输入字符消息,响应所述改变事件之后,针对每一未处理的改变事件执行以下操作:获取未处理的改变事件;若所述缓存当前存储的字符串与所述输入框中的字符串相同,拒绝响应所述未处理的改变事件。

可以理解的是,在响应过一次改变事件之后,将缓存中存储的字符串替换为当前输入框中包含的字符串,即此时缓存中存储的字符串与所述输入框中的字符串相同,因此在处理其他未处理的改变事件之前,获取到未处理的改变事件后,先判断缓存当前存储的字符串与输入框中的字符串是否相同,若相同说明之前已经响应过一次改变事件了,消息队列中的输入字符消息已经处理完毕,也得到了用户输入的完整字符串对应的处理结果,对于后面未处理的改变事件没有处理的必要,实现只要响应一次改变事件的目的,所以在获取未处理的改变事件之后拒绝响应未处理的改变事件。

下面以用户输入的字符为“zhang”为例进行说明,如图6所示,为本申请实施例提供的消息处理方法的一种实现方式的示意图。

假设在步骤S601中用户在输入法中文模式下输入的英文字符为“zhang”,在步骤S602中的消息队列中存储有“z的输入字符消息”、“h的输入字符消息”、“a的输入字符消息”、“n的输入字符消息”、“g的输入字符消息”。在响应完消息队列中的所有输入字符消息后(即执行完步骤S603至步骤S612),消息队列中未存储有未处理的输入字符消息,在步骤S613中响应一次改变事件(最后一个字符g对应的改变事件),将缓存中存储的字符串替换为当前输入框中的字符串(zhang),然后在步骤S614中获取输入字符n触发产生的未处理的改变事件,在步骤S615中判断缓存当前存储的字符串与输入框中的字符串是否相同,由于刚刚已经响应过一次改变事件了,此时缓存当前存储的字符串与输入框中的字符串是相同的,所以执行步骤S616拒绝响应并丢弃输入字符n触发产生的未处理的改变事件,否则执行步骤S617。同理,针对输入字符a触发产生的未处理的改变事件、输入字符h触发产生的未处理的改变事件以及输入字符z触发产生的未处理的改变事件的处理过程与上述过程相同,这里不再赘述。

上述本申请公开的实施例中详细描述了方法,对于本申请的方法可采用多种形式的装置实现,因此本申请还公开了一种装置,下面给出具体的实施例进行详细说明。

如图7所示,为本发明实施例提供的消息处理装置的一种实现方式的结构图,该装置包括:

获取模块71,用于从消息队列中获取一个未处理的输入字符消息,其中,一个所述输入字符消息对应针对输入框输入的一个字符。

输入模块72,用于响应所述输入字符消息,将所述输入字符消息对应的字符输入至所述输入框。

检测模块73,用于若获得表征所述输入框中的字符发生变化的改变事件,检测所述消息队列中是否存储有未处理的输入字符消息。

处理模块74,用于若所述消息队列中存储有未处理的输入字符消息,不处理所述改变事件,触发所述获取模块。

响应模块75,用于若所述消息队列中未存储有未处理的输入字符消息,响应所述改变事件。

可选的,所述响应模块包括:

第一获取单元,用于若所述消息队列中未存储有未处理的输入字符消息,获取所述输入框对应的缓存中存储的字符串。

响应单元,用于若所述缓存中存储的字符串与所述输入框中的字符串不相同,响应所述改变事件。

存储单元,用于将所述缓存中存储的字符串替换为所述输入框中的字符串。

可选的,所述处理模块包括:

第一处理单元,用于若所述消息队列中存储有未处理的输入字符消息,拒绝响应所述改变事件。

可选的,针对每一未处理的改变事件所述响应模块还包括:

第二获取单元,用于获取未处理的改变事件。

第二处理单元,用于若所述缓存当前存储的字符串与所述输入框中的字符串相同,拒绝响应所述未处理的改变事件。

如图8所示,为本发明实施例提供的电子设备的一种实现方式的结构图,该电子设备包括:

存储器81,用于存储程序;

处理器82,用于执行所述程序,所述程序具体用于:

从消息队列中获取一个未处理的输入字符消息,其中,一个所述输入字符消息对应针对输入框输入的一个字符;

响应所述输入字符消息,将所述输入字符消息对应的字符输入至所述输入框;

若获得表征所述输入框中的字符发生变化的改变事件,检测所述消息队列中是否存储有未处理的输入字符消息;

若所述消息队列中存储有未处理的输入字符消息,不处理所述改变事件,返回所述从消息队列中获取一个未处理的输入字符消息步骤;

若所述消息队列中未存储有未处理的输入字符消息,响应所述改变事件。

处理器82可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit)。

第一服务器还可以包括通信接口83以及通信总线84,其中,存储器81、处理器82以及通信接口83通过通信总线84完成相互间的通信。

本发明实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述任一所述的消息处理方法实施例中包含的各个步骤。

需要说明的是,本说明书中的各个实施例中记载的特征可以相互替换或者组合。对于装置或系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 消息处理方法、消息处理装置、存储介质及电子设备
  • 消息处理方法、消息处理装置、电子设备及存储介质
技术分类

06120112190623