一种消息实时同步方法以及集装箱码头作业系统的制作方法

文档序号:7997646阅读:284来源:国知局
一种消息实时同步方法以及集装箱码头作业系统的制作方法
【专利摘要】本发明适用于集装箱码头管理领域,提供一种消息实时同步方法以及集装箱码头作业系统,从客户端侧所述方法包括:发起业务请求并接收输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID;发送所述业务数据;接收来自于服务器推送的业务数据,并刷新显示。本发明用实时消息ID来标记各个不同类型的业务数据,在客户端发起业务请求后,将实时消息ID的业务数据发送至服务器,服务器向客户端推送数据时,按照实时消息ID可以将业务数据准确地推送到预定该业务数据所属消息类型的客户端中,无需向所有的客户端推送数据,减小了网络传输的数据量,保证了数据的一致性和协同性。
【专利说明】一种消息实时同步方法以及集装箱码头作业系统

【技术领域】
[0001]本发明属于集装箱码头管理领域,尤其涉及一种消息实时同步方法以及集装箱码头作业系统。

【背景技术】
[0002]随着集装箱运输量持续攀升,集装箱航线不断增加的机遇后面,集装箱码头面临着挑战。运输船舶大型化(超过10000TEU)、专业化以及航运公司联盟化的发展趋势日益明显,从而提高了航运公司的市场谈判地位,也迫使港口进一步向深水化、大型化和专门化方向发展;运输船舶大型化使得港口为争夺干线港的竞争日趋激烈;门到门运输的需求带来以供应链管理为基础的无缝运输要求,海铁等多式联运的发展,使得集装箱码头和港口的服务质量、集疏运设施等成为竞争的焦点。
[0003]为了提高码头的服务水平,提升码头的核心竞争力,码头纷纷加快对先进信息通讯技术的应用,提升码头信息化水平。集装箱码头作业系统(CTOS)是支持码头作业的核心系统,包括船舶计划、泊位计划、堆场计划、无线车载系统、闸口管理、EDI系统、单证管理等业务模块,是建设智慧型码头的基础。CTOS的计划和控制模块中,对数据实时性要求特别高,如闸口进出的集装箱在堆场和船舶计划中都必须实时的反应出来;做船舶装船或卸船计划时,集装箱在堆场或船上的位置都应该做相应的改变;中控发送指令或激活作业线等都需要满足数据的实时性;此外,某操作人员对某一数据的操作要实时一致地更新到其他操作人员的操作界面。
[0004]而现有的CTOS系统中在数据更新时,包括输入数据或修改删除数据等等,客户端连接到系统后,由于业务数据不分类,使得客户端在更新数据时需要从服务器中下载全部数据,网络中数据传输量过大使得客户端数据更新显示较慢,而且当多个客户端同时发起业务数据更新请求时,容易造成消息堵塞,使得客户端数据的一致性和协同性得不到保证,其中所述一致性是指不同客户端访问同一属性数据时数据要相同,所述协同性是指客户端进行数据更新时要及时更新到其他客户端。


【发明内容】

[0005]鉴于上述问题,本发明的目的在于提供一种消息实时同步方法、客户端、服务器以及一种集装箱码头作业系统,旨在解决现有集装箱码头作业系统中数据更新缓慢,业务数据的一致性和协同性得不到保证的技术问题。
[0006]一方面,从客户端侧,所述消息实时同步方法包括下述步骤:
[0007]发起业务请求并接收输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID ;
[0008]发送所述业务数据;
[0009]接收来自于服务器推送的业务数据,并刷新显示。
[0010]另一方面,从服务器侧,所述消息实时同步方法包括下述步骤:
[0011]启动套接字监听以及消息队列扫描线程,在检测到有客户端连接到服务器时将连接信息添加到客户端的套接字列表;
[0012]接收来自于客户端的业务数据;
[0013]调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,并组成实时包后写入消息队列;
[0014]读取消息队列中的业务数据,并根据所述业务数据中的实时消息ID将所述业务数据推送至客户端。
[0015]第三方面,所述客户端包括:
[0016]业务发起单元,用于发起业务请求并接收输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID ;
[0017]数据发送单元,用于发送所述业务数据;
[0018]数据刷新显示单元,用于接收来自于服务器推送的业务数据,并刷新显示。
[0019]第四方面,所述服务器包括:
[0020]消息监听单元,用于启动套接字监听以及消息队列扫描线程,在检测到有客户端连接到服务器时将连接信息添加到客户端的套接字列表;
[0021]数据接收单元,用于接收来自于客户端的业务数据;
[0022]消息处理写入单元,用于调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,并组成实时包后写入消息队列;
[0023]数据读取推送单元,用于读取消息队列中的业务数据,并根据所述业务数据中的实时消息ID将所述业务数据推送至客户端。
[0024]第五方面,所述集装箱码头作业系统包括至少一个所述的客户端、一个服务器以及与所述服务器连接的数据库,所述客户端与所述服务器有线或无线连接。
[0025]本发明的有益效果是:本发明技术方案用实时消息ID来标记各个不同类型的业务数据,在客户端发起业务请求后,将实时消息ID的业务数据发送至服务器,所述服务器将业务数据存于消息队列中这样将服务器向客户端推送数据时,按照实时消息ID可以将业务数据准确地推送到预定该业务数据所属消息类型的客户端中,无需向所有的客户端推送数据,减小了网络传输的数据量,保证了数据的一致性和协同性。

【专利附图】

【附图说明】
[0026]图1是本发明第一实施例提供的消息实时同步方法的流程图;
[0027]图2是本发明第二实施例提供的消息实时同步方法的流程图;
[0028]图3是本发明第三实施例提供的消息实时同步方法的流程图;
[0029]图4是本发明第四实施例提供的消息实时同步方法的流程图;
[0030]图5是本发明第五实施例提供的客户端的结构方框图;
[0031]图6是本发明第六实施例提供的客户端的结构方框图;
[0032]图7是本发明第七实施例提供的服务器的结构方框图;
[0033]图8是本发明第八实施例提供的服务器的结构方框图;
[0034]图9是本发明第九实施例提供的集装箱码头作业系统的结构图;
[0035]图10是本发明第十实施例提供的集装箱码头作业系统的结构图;
[0036]图11是本发明第十一实施例提供的集装箱码头作业系统的结构图。

【具体实施方式】
[0037]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0038]为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0039]实施例一:
[0040]图1示出了本发明第一实施例提供的消息实时同步方法的流程,为了便于说明仅不出了与本发明实施例相关的部分。
[0041]本实施例从客户端侧描述了消息实时同步方法的步骤,包括:
[0042]步骤S101、发起业务请求并接收输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID ;
[0043]步骤S102、发送所述业务数据;
[0044]步骤S103、接收来自于服务器推送的业务数据,并刷新显示。
[0045]所述待更新的业务数据为集装箱码头作业系统中当前需要变更的数据,包括增力口、修改、删除数据等等,具体而言可以为船舶位置数据、堆场集装箱数据、闸口数据等等一系列数据,这些数据需要及时的反应在各个客户端中,本实施例中的待更新的业务数据中包含有用于唯一标识该业务数据类型的实时消息ID,在获取到待更新的业务数据后,发送所述业务数据,服务器再将所述业务数据存储消息队列中,由于可能会存在多个客户端同时进行数据操作,因此在服务器中通过以消息队列方式存储接收到的业务数据,再根据所述业务数据中的实时消息ID将消息(即业务数据)推送到预定该业务数据类型的客户端中,无需推送到所有客户端,降低了网络传输数据量,有利于加快数据更新速度。
[0046]实施例二:
[0047]图2示出了本发明第二实施例提供的消息实时同步方法的流程,为了便于说明仅不出了与本发明实施例相关的部分。
[0048]本实施例同样从客户端侧描述了消息实时同步方法的步骤,具体包括:
[0049]步骤S201、注册当前窗口所需关注的消息类型;
[0050]步骤S202、判断所述消息类型是否存在,若存在则将当前窗口句柄添加到相应的实时消息列表中。否则先创建所述消息类型对应的实时消息ID再添加窗口句柄。
[0051]上述两个步骤主要描述了创建实时消息ID的过程,通常在客户端的一个窗口中,需要设置该窗口所关注的消息类型,亦即当前窗口需要更新哪些数据,这里首先注册窗口所需关注的消息类型,具体的,通过相关的注册函数(比如111_spBaseMain->RegisterMessage函数)将自己关注相应的消息类型进行注册如果当前窗口已存在,则直接将客户端的当前窗口的窗口句柄添加到相应的实时消息列表中,否则首先创建所述消息类型对应的实时消息ID,然后在添加窗口句柄到实时消息列表,这里每个消息类型都有一个对应的实时消息列表。
[0052]步骤S203、当窗口无需关注其中的消息类型时,从相应的实时消息列表中删除所窗口对应的窗口句柄。
[0053]当窗口无需关注其中的某个或某几个消息类型时,通过删除函数(比如m_spBaseMain->UnRegisterMessage)从对应的实时消息列表中删除所窗口对应的窗口句柄,这样就表示当前窗口不再更新这种类型的业务数据。
[0054]步骤S204、发起业务请求并接收用户输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID ;
[0055]步骤S205、检测输入的待更新的业务数据的合法性。
[0056]优选的,本实施例中客户端在向服务器发送数据之前,还要检测所述用户输入的待更新的业务数据的合法性,当检测合格之后才发送业务数据。
[0057]步骤S206、发送所述业务数据;
[0058]步骤S207、启动实时监听线程并初始化,连接到服务器;
[0059]步骤S208、接收到服务器推送的业务数据后,分析所述业务数据并组织成Table格式的数据包;
[0060]步骤S209、调用所有的业务层的实时处理方法对所述数据包进行数据更新;
[0061]步骤S210、更新数据完毕后,根据所述数据包中的实时消息ID通知预定该消息的窗口界面,并更新显不。
[0062]上述步骤S207-S210是实施例一中步骤S103的一种具体优选的实施方式。
[0063]首先客户端系统启动实时监听线程RealTimeMonitorThread并初始化,并调用CTSocket连接到服务端,在接收到服务器推送的业务数据后,调用nRecv=CTSocket.Receive (szBuffer+nRecieve, 8-nRecieve)方法返回数据,然后调用ITOSParse->SetResult((BYTE*)(STRLMSGNODE.pszMsgContent),STRLMSGN ODE.nLen)解析包内容,将业务数据组织成Table格式的数据包,ITOSParse即为以Table格式存储的信息,接着调用所有的业务层已实例化的业务处理方法DoRealTime (IUnknown*)进行实时消息的业务层处理,在更新数据之后,根据实时消息ID调用m_clMessage.SendRealTime (uRealTimeMessageID, VOID*)的方法通知订阅该消息的窗口界面,客户端接收到T0S_C0MM0N_REALTIME消息之后,通过LPARAM参数所带信息对界面进行更新操作。
[0064]实施例三:
[0065]图3示出了本发明第三实施例提供的消息实时同步方法的流程,为了便于说明仅不出了与本发明实施例相关的部分。
[0066]本实施例从服务器侧描述了消息实时同步方法的步骤,具体包括:
[0067]步骤S301、启动套接字监听以及消息队列扫描线程,在检测到有客户端连接到服务器时将连接信息添加到客户端的套接字列表。
[0068]本实施例中服务器首先需要监控客户端连接,具体的,用异步模式启动socket监听,然后启动扫描消息队列的线程ReadMSMQThread,当客户端连接到服务器时,将连接信息加入到客户端Socket列表,这样服务器就可以知晓当前有哪些客户端连接到服务器。
[0069]步骤S302、接收来自于客户端的业务数据;
[0070]步骤S303、调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,并组成实时包后写入消息队列。
[0071]本实施例中,业务数据经过客户端的合法检测发送到服务器并接收后,调用业务中间层接口进行数据解析、处理业务逻辑,如果处理成功,则将所述业务数据更新到数据库中,保证数据中的数据为最新数据,然后将所述业务数据组成实时包写入消息队列,如果失败,则不写入。
[0072]步骤S304、读取消息队列中的业务数据,并根据所述业务数据中的实时消息ID将所述业务数据推送至客户端。
[0073]由于可能存在多个客户端同时进行操作,因此本实施例中将客户端发送的业务数据存储于消息队列,服务器再读取消息队列中的业务数据,服务器根据业务数据中的实时消息ID,将数据推送至预定该业务数据所属消息类型的客户端,客户端接收到业务数据后,根据数据包中的实时消息ID通知预定该消息的窗口界面,并更新显示。本实施例采用了实时消息ID来标识业务所属的消息类型,服务器无需将接收到的所有的消息(即业务数据)推送到所有的客户端,这样就可以减少网络传输数据量,有利于数据客户端快速刷新数据。
[0074]实施例四:
[0075]图4示出了本发明第四实施例提供的消息实时同步方法的流程,为了便于说明仅不出了与本发明实施例相关的部分。
[0076]本实施例同样从服务器侧描述了消息实时同步方法的步骤,具体包括:
[0077]步骤S401、启动套接字监听以及消息队列扫描线程,在检测到有客户端连接到服务器时将连接信息添加到客户端的套接字列表;
[0078]步骤S402、接收来自于客户端的业务数据;
[0079]步骤S403、调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,并组成实时包后写入消息队列;
[0080]步骤S404、读取消息队列中的业务数据;步骤S405、根据所述业务数据中的实时消息ID,采用多播方法将所述业务数据推送至预定该业务数据所属消息类型的客户端。
[0081]上述步骤S404、S405是施实例三中步骤S304的一种具体优选的实施方式,这里所述消息队列可以为一个或多个,本实施使用消息队列(如:微软的MSMQ)的多播方式,实现多个消息队列进行同时发送,既可以实现一次传送所有客户端的业务数据,也可以达到只对特定客户端传送数据的目的。
[0082]本实施例在实施例三的基础上进一步采取了多播技术,可以实现多个消息队列进行同时发送,进一步提高了系统的稳定性。
[0083]实施例五:
[0084]图5示出了本发明第五实施例提供的客户端的结构,为了便于说明仅示出了与本发明实施例相关的部分。
[0085]本实施例提供的客户端包括:
[0086]业务发起单元501,用于发起业务请求并接收输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID ;
[0087]数据发送单元502,用于发送所述业务数据;
[0088]数据刷新显示单元503,用于接收来自于服务器推送的业务数据,并刷新显示。
[0089]本实施例提供的各个功能单元对应实现了实施例一中的步骤S101-S103,具体的,本实施例中的待更新的业务数据中包含有用于唯一标识该业务数据类型的实时消息ID,在获取到待更新的业务数据后,发送所述业务数据,服务器再将所述业务数据存储消息队列中,由于可能会存在多个客户端进行同时进行数据操作,因此在服务器中通过以消息队列方式存储接收到的业务数据,再根据所述业务数据中的实时消息ID将消息即业务数据,推送到预定该业务数据类型的客户端中,无需推送到所有客户端,降低了网络传输数据量,有利于加快数据更新速度。
[0090]实施例六:
[0091]图6示出了本发明第六实施例提供的客户端的结构,为了便于说明仅示出了与本发明实施例相关的部分。
[0092]本实施例提供的客户端包括:
[0093]编号创建单元61,用于根据当前窗口所需预定的消息类型,创建实时消息ID ;
[0094]业务发起单元62,用于发起业务请求并接收输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID ;
[0095]数据检测单元63,用于检测输入的待更新的业务数据的合法性。
[0096]数据发送单元64,用于发送所述业务数据;
[0097]数据刷新显示单元65,用于接收来自于服务器推送的业务数据,并刷新显示。
[0098]其中,所述编号创建单元61包括:
[0099]消息注册模块611,用于注册当前窗口所需关注的消息类型;
[0100]类型判断处理模块612,用于判断所述消息类型是否存在,若存在则将当前窗口句柄添加到相应的实时消息列表中。否则先创建所述消息类型对应的实时消息ID再添加窗口句柄;
[0101]句柄删除单元613,用于当窗口无需关注其中的消息类型时,从相应的实时消息列表中删除所窗口对应的窗口句柄。
[0102]其中,所述数据刷新显示单元65包括:
[0103]连接初始化模块651,用于启动实时监听线程并初始化,连接到服务器;
[0104]数据分析模块652,用于接收到服务器推送的业务数据后,分析所述业务数据并组织成Table格式的数据包;
[0105]业务处理模块653,用于调用所有的业务层的实时处理方法对所述数据包进行数据更新;
[0106]数据刷新显示模块654,用于更新数据完毕后,根据所述数据包中的实时消息ID通知预定该消息的窗口界面,并更新显示。
[0107]本实施提供的各个功能单元和功能模块对应实现了实施二中的各个步骤,另一方面,本实施例在实施例五的基础上增加了编号创建单元61、数据检测单元63,以及公开了编号创建单元61和数据刷新显示单元65的一种具体优选结构,在本实施例中,客户端可以设置或取消需要关注的消息类型,服务器根据实施消息ID将业务数据推送到预定该业务数据所属消息类型的客户端中,从而降低了网络中传输的数据量,加快了客户端数据更新速度。
[0108]实施例七:
[0109]图7示出了本发明第七实施例提供的服务器的结构,为了便于说明仅示出了与本发明实施例相关的部分。
[0110]本实施例提供的服务器包括:
[0111]消息监听单元701,用于启动套接字监听以及消息队列扫描线程,在检测到有客户端连接到服务器时将连接信息添加到客户端的套接字列表;
[0112]数据接收单元702,用于接收来自于客户端的业务数据;
[0113]消息处理写入单元703,用于调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,并组成实时包后写入消息队列;
[0114]数据读取推送单元704,用于读取消息队列中的业务数据,并根据所述业务数据中的实时消息ID将所述业务数据推送至客户端。
[0115]本实施提供的各个功能单元对应实现了实施三中的各个步骤,由于可能存在多个客户端同时进行操作,因此本实施例中将客户端发送的业务数据存储于消息队列,服务器再读取消息队列中的业务数据,服务器根据业务数据中的实时消息ID,将数据推送至预定该业务数据所属消息类型的客户端。本实施例采用了实时消息ID来标识业务所属的消息类型,服务器无需将接收到的所有的消息,即业务数据,推送到所有的客户端,这样就可以减少网络传输数据量,有利于数据客户端快速刷新数据。
[0116]实施例八:
[0117]图8示出了本发明第八实施例提供的服务器的结构,为了便于说明仅示出了与本发明实施例相关的部分。
[0118]本实施例提供的服务器包括:
[0119]消息监听单元81,用于启动套接字监听以及消息队列扫描线程,在检测到有客户端连接到服务器时将连接信息添加到客户端的套接字列表;
[0120]数据接收单元82,用于接收来自于客户端的业务数据;
[0121]消息处理写入单元83,用于调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,并组成实时包后写入消息队列;
[0122]数据读取推送单元84,用于读取消息队列中的业务数据,并根据所述业务数据中的实时消息ID将所述业务数据推送至客户端。
[0123]其中,所述数据读取推送单元84包括:
[0124]数据读取模块841,用于读取消息队列中的业务数据;
[0125]多播推送模块842,用于根据所述业务数据中的实时消息ID,采用多播方法将所述业务数据推送至预定该业务数据所属消息类型的客户端。
[0126]本实施例提供的各个功能单元和功能模块对应实现了实施四中的各个步骤,另一方面,本实施例在实施例七的基础上,进一步公开了数据读取推送单元84的一种优选结构,本实施在实施例七的基础上进一步采取了多播技术,可以实现多个消息队列进行同时发送,进一步提高了系统的稳定性。
[0127]实施例九:
[0128]图9示出了本发明第九实施例提供的集装箱码头作业系统的结构,为了便于说明仅不出了与本发明实施例相关的部分。
[0129]本实施例提供的集装箱码头作业系统包括至少一个如实施例五或实施例六所述的客户端、如实施例七或实施例八所述的服务器以及与所述服务器连接的数据库,所述客户端与所述服务器有线或无线连接。在集装箱码头作业系统中,所述客户端可以包括一个或多个,比如中控、配载、闸口、无线终端等都可以作为客户端,客户端与服务器通过有线或无线的方式,通过IP/TCP协议连接。
[0130]如图9所示,这里所有的客户端都注册了其所关心的业务数据的消息类型,假设客户端4向服务器发送了业务数据更新请求,所述业务数据包含有唯一标识该业务数据类型的实时消息ID,在验证业务数据合法后,向服务器发送所述业务数据,服务器调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,然后将业务数据组成实时包写入消息队列MQ,服务器再读取MQ中的业务数据,根据所述业务数据中的实时消息ID,采用多播方法将所述业务数据推送至预定该业务数据所属消息类型的客户端。预定该业务所属消息类型的客户端接收到推送的业务数据后,调用所有的业务层的实时处理方法对所述数据包进行数据更新,更新数据完毕后,根据所述数据包中的实时消息ID通知预定该消息的窗口界面,并更新显示。
[0131]在本实施提供的集装箱码头作业系统中,客户端界面上的数据更新显示迅速,可以满足实时性要求极高的集装箱码头作业系统。
[0132]实施例十:
[0133]图10示出了本发明第十实施例提供的集装箱码头作业系统的结构,为了便于说明仅不出了与本发明实施例相关的部分。
[0134]本实施例提供的集装箱码头作业系统包括实施例九中所述的各个部件,包括客户端、服务器和数据库,由于在实施例九中服务器需要处理所有的业务逻辑、数据操作,这对服务器的性能有较高的要求,为了减轻服务器的负担,本实施例中,按照功能划分,将所述服务器划分为中间层服务器和实时消息服务器,这里假设有一个中间层服务器S和两个实时消息服务器SI和S2,假设客户端4向中间层服务器S发送了业务数据更新请求,所述业务数据包含有唯一标识该业务数据类型的实时消息ID,在验证业务数据合法后,客户端4向中间层服务器S发送所述业务数据,中间层服务器S对调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,然后将业务数据组成实时包写入消息队列MQ,然后中间层服务器S读取MQ中的业务数据并已多播方式推送至实时消息服务器S1、S2,实时消息服务器S1、S2再根据业务数据中的实时消息ID,将所述业务数据推送至预定该业务数据所属消息类型的客户端。预定该业务所属消息类型的客户端接收到推送的业务数据后,调用所有的业务层的实时处理方法对所述数据包进行数据更新,更新数据完毕后,根据所述数据包中的实时消息ID通知预定该消息的窗口界面,并更新显示。
[0135]本实施例在实施例九的基础上将服务器划分成一个中间服务器和多个实时消息服务器,所述实时消息服务器专门负责根据实时消息ID推送业务数据,减轻了服务器的负担,使得系统布局更为合理,数据转发更为迅速。
[0136]实施例H:
[0137]图11示出了本发明第十一实施例提供的集装箱码头作业系统的结构,为了便于说明仅不出了与本发明实施例相关的部分。
[0138]本实施例提供的集装箱码头作业系统包括实施例十中所述的客户端、中间层服务器、实时消息服务器和数据库,本实施例提供的系统与实施例十所述系统的数据流向不同,在本实施例中,客户端亦可向实时消息服务器发送业务数据更新请求,在图11中,假设客户端I是一种手持无线设备,其向实时服务器Si发送业务数据更新请求,在验证业务数据合法后,向实时服务器Si发送业务数据,实时服务器SI将该业务数据转发给中间服务器S后,中间层服务器S对调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,然后将业务数据组成实时包写入消息队列MQ,然后中间层服务器S读取MQ中的业务数据并已多播方式推送至实时消息服务器S1、S2,实时消息服务器S1、S2再根据业务数据中的实时消息ID,将所述业务数据推送至预定该业务数据所属消息类型的客户端。预定该业务所属消息类型的客户端接收到推送的业务数据后,调用所有的业务层的实时处理方法对所述数据包进行数据更新,更新数据完毕后,根据所述数据包中的实时消息ID通知预定该消息的窗口界面,并更新显示。
[0139]上述实施例十和实施例十一提供了两种不同的系统数据传输过程,具体与客户端的实现形式有关,若所述客户端是中控、配载、闸口等,则客户端通常向中间层服务器发送业务更新请求,若所述客户端是无线手持设备,则客户端通常向实时服务器发送业务更新请求。实施例十和实施例十一中,用中间层服务器和若干个实时消息服务器实现了实施例十中所述服务器的功能,这种服务器分布式布局方式更为合理,数据转发更为迅速。本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如R0M/RAM、磁盘、光盘等。
[0140]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种消息实时同步方法,其特征在于,所述方法包括: 发起业务请求并接收输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID ; 发送所述业务数据; 接收来自于服务器推送的业务数据,并刷新显示。
2.如权利要求1所述方法,其特征在于,所述发起业务请求并接收用户输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID步骤之前,还包括: 根据当前窗口所需预定的消息类型,创建实时消息ID。
3.如权利要求2所述方法,其特征在于,所述根据当前窗口所需关注的消息类型,创建实时消息ID步骤,具体包括: 注册当前窗口所需关注的消息类型; 判断所述消息类型是否存在,若存在则将当前窗口句柄添加到相应的实时消息列表中。否则先创建所述消息类型对应的实时消息ID再添加窗口句柄。
4.如权利要求3所述方法,其特征在于,所述判断所述消息类型是否存在,若存在则将当前窗口句柄添加到相 应的实时消息列表中。否则先创建所述消息类型对应的实时消息ID再添加窗口句柄步骤之后,包括: 当窗口无需关注其中的消息类型时,从相应的实时消息列表中删除所窗口对应的窗口句柄。
5.如权利要求4所述方法,其特征在于,所述发送所述业务数据步骤之前还包括: 检测输入的待更新的业务数据的合法性。
6.如权利要求1-5任一项所述方法,其特征在于,所述接收来自于服务器推送的业务数据,并刷新显示步骤具体包括: 启动实时监听线程并初始化,连接到服务器; 接收到服务器推送的业务数据后,分析所述业务数据并组织成Table格式的数据包; 调用所有的业务层的实时处理方法对所述数据包进行数据更新; 更新数据完毕后,根据所述数据包中的实时消息ID通知预定该消息的窗口界面,并更新显示。
7.一种消息实时同步方法,其特征在于,所述方法包括: 启动套接字监听以及消息队列扫描线程,在检测到有客户端连接到服务器时将连接信息添加到客户端的套接字列表; 接收来自于客户端的业务数据; 调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,并组成实时包后写入消息队列; 读取消息队列中的业务数据,并根据所述业务数据中的实时消息ID将所述业务数据推送至客户端。
8.如权利要求7所述方法,其特征在于,所述读取消息队列中的业务数据,并根据所述业务数据中的实时消息ID将所述业务数据推送至客户端步骤具体包括: 读取消息队列中的业务数据;根据所述业务数据中的实时消息ID,采用多播方法将所述业务数据推送至预定该业务数据所属消息类型的客户端。
9.一种客户端,其特征在于,所述客户端包括: 业务发起单元,用于发起业务请求并接收输入的待更新的业务数据,所述业务数据包含有唯一标识该业务数据类型的实时消息ID ; 数据发送单元,用于发送所述业务数据; 数据刷新显示单元,用于接收来自于服务器推送的业务数据,并刷新显示。
10.如权利要求9所述客户端,其特征在于,所述客户端还包括: 编号创建单元,用于根据当前窗口所需预定的消息类型,创建实时消息ID。
11.如权要求10所述客户端,其特征在于,所述编号创建单元包括: 消息注册模块,用于注册当前窗口所需关注的消息类型; 类型判断处理模块,用于判断所述消息类型是否存在,若存在则将当前窗口句柄添加到相应的实时消息列表中。否则先创建所述消息类型对应的实时消息ID再添加窗口句柄。
12.如权利要求11所述客户端,其特征在于,所述编号创建单元还包括: 句柄删除单元,用于当窗口无需关注其中的消息类型时,从相应的实时消息列表中删除所窗口对应的窗口句柄。
13.如权利要求12所述客户端,其特征在于,所述客户端还包括: 数据检测单元,用于检测输入的待更新的业务数据的合法性。
14.如权利要求9-13所述客户端,其特征在于,所述数据刷新显示单元包括: 连接初始化模块,用于启动实时监听线程并初始化,连接到服务器; 数据分析模块,用于接收到服务器推送的业务数据后,分析所述业务数据并组织成Table格式的数据包; 业务处理模块,用于调用所有的业务层的实时处理方法对所述数据包进行数据更新;数据刷新显示模块,用于更新数据完毕后,根据所述数据包中的实时消息ID通知预定该消息的窗口界面,并更新显示。
15.一种服务器,其特征在于,所述服务器包括: 消息监听单元,用于启动套接字监听以及消息队列扫描线程,在检测到有客户端连接到服务器时将连接信息添加到客户端的套接字列表; 数据接收单元,用于接收来自于客户端的业务数据; 消息处理写入单元,用于调用业务中间层接口解析并处理所述业务数据,处理成功后将业务数据更新到数据库中,并组成实时包后写入消息队列; 数据读取推送单元,用于读取消息队列中的业务数据,并根据所述业务数据中的实时消息ID将所述业务数据推送至客户端。
16.如权利要求15所述服务器,其特征在于,所述数据读取推送单元包括: 数据读取模块,用于读取消息队列中的业务数据; 多播推送模块,用于根据所述业务数据中的实时消息ID,采用多播方法将所述业务数据推送至预定该业务数据所属消息类型的客户端。
17.一种集装箱码头作业系统,其特征在于,所述系统包括至少一个如权利要求9-14任一项所述的客户端、如权利要求15或16所述的服务器以及与所述服务器连接的数据库,所述客户端与所述服务器 有线或无线连接。
【文档编号】H04L29/06GK104079599SQ201310102110
【公开日】2014年10月1日 申请日期:2013年3月27日 优先权日:2013年3月27日
【发明者】吴少聪, 杨玉林, 高磊, 龚卫龙, 张毅, 杜俊文, 沈卓明, 卢赞新, 钟欢, 颜银慧, 刘晖 申请人:招商局国际信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1