一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种实现web系统即时通信的方法、装置和系统与流程

2022-11-16 15:44:25 来源:中国专利 TAG:


1.本发明属于即时通信技术领域,特别涉及一种实现web系统即时通信的方法、装置和系统。


背景技术:

2.web应用程序是一种可以通过web访问的应用程序。web应用程序的一个最大好处是用户很容易访问应用程序。用户只需要有浏览器即可,不需要再安装其他软件。一个web应用程序是由完成特定任务的各种web组件(web components)构成的并通过web将服务展示给外界。在实际应用中,web应用程序是由多个servlet、jsp页面、html文件以及图像文件等组成。所有这些组件相互协调为用户提供一组完整的服务。
3.对现有的web系统增加即时通信功能,目前主要的做法是对现有web系统在代码级别上进行修改,对于一些老系统可能已经没有相应的研发人员对应造成无法增加即时通信功能。


技术实现要素:

4.为了解决上述技术问题,本发明提出了一种实现web系统即时通信的方法、装置和系统,采用反向代理服务器,在不需要对现有web系统进行代码修改的情况下实现即时通信功能。
5.为实现上述目的,本发明采用以下技术方案:
6.本发明还提出了一种实现web系统即时通信的方法,运行于反向代理服务器,包括以下步骤:
7.获取用户请求,在通过所述用户请求验证为即时通信用户后,转发所述用户请求到后端web服务器;
8.响应于后端web服务器的用户请求,在响应数据符合预设格式的前提下,向客户端服务器返回加载即时通信客户端脚本的请求;响应于客户端服务器执行所述即时通信客户端脚本,建立与客户端服务器的通信连接;
9.获取用户上线消息,并向客户端服务器和后端web服务器均广播用户上线消息;再次获取用户向目的用户发送消息的请求,确定向目的用户发送请求的通道,建立用户和目的用户之间的即时通信。
10.进一步的,所述建立与客户端服务器的通信连接的详细过程包括:
11.反向代理服务器响应于后端web服务器的用户请求,在响应数据符合预设格式的前提下,将引导脚本植入到响应数据中;向客户端服务器返回包含引导脚本的界面;客户端服务器执行所述引导脚本,在判断符合加载即时通信客户端脚本的条件下,加载即时通信客户端脚本;所述引导脚本用于引导加载即时通信客户端脚本;
12.反向代理服务器响应于即时通信客户端脚本的执行,将用户标识更新至即时通信客户端脚本中,并返回至客户端服务器;客户端服务器执行所述即时通信客户端脚本,建立
与反向代理服务器的通信连接。
13.进一步的,所述响应数据符合预设格式具体包括:相应数据的content_type是否为text/html格式,页面url是否符合设置的规则。
14.进一步的,所述引导脚本为js代码,用于判断dom的窗口大小是否大于特定值,是否是顶层窗口。
15.进一步的,所述在判断符合加载即时通信客户端脚本的条件下,加载即时通信客户端脚本具体包括:如果dom窗口大于特定值,且为顶层窗口,异步加载即时通信客户端脚本。
16.进一步的,所述获取用户请求,在通过所述用户请求验证为即时通信用户后,转发所述用户请求到后端web服务器的详细过程包括:
17.获取用户未登录状态下的页面请求,如果页面请求中包含即时通信的登录标识,向客户端服务器返回即使通信登录页面;
18.响应于用户登录,从提交路径中获取用户密码,并与系统数据库的用户密码进行对比,如果比如成功,则设置用户为已登录状态,并向客户端服务器发送重定向消息;
19.响应于二次页面请求,如果用户状态为已登录,则将所述二次页面请求转发至后端web服务器。
20.进一步的,所述提交路径不同于反向代理服务器和后端web服务器之间的路径。
21.进一步的,所述建立用户和目的用户之间的即时通信时,即时通信客户端脚本封装发送消息的请求;所述发送消息的请求包括发送人,接收人和消息内容。
22.本发明还提出了一种实现web系统即时通信的装置,包括客户端服务器、反向代理服务器和后端web服务器;
23.所述客户端服务器用于发出页面请求,在用户请求验证时,通过即时通信登录用户名和密码进行登录;以及在接收到反向代理服务器发出的加载即时通信客户端脚本的请求时;加载即时通信客户端脚本,建立与反向代理服务器之间的通信连接;以及发出即时通信的请求;
24.所述反向代理服务器用于获取用户请求,在通过所述用户请求验证为即时通信用户后,转发所述用户请求到后端web服务器;响应于后端web服务器的用户请求,在响应数据符合预设格式的前提下,向客户端服务器返回加载即时通信客户端脚本的请求;响应于客户端服务器执行所述即时通信客户端脚本,建立与客户端服务器的通信连接;获取用户上线消息,并向客户端服务器和后端web服务器均广播用户上线消息;再次获取用户向目的用户发送消息的请求,确定向目的用户发送请求的通道,建立用户和目的用户之间的即时通信;
25.所述后端web服务器用于反馈响应数据;以及在建立即时通信连接后从页面展示即时通信的消息。
26.本发明还提出了一种实现web系统即时通信的系统,包括验证模块、建立连接模块和通信模块;
27.所述验证模块用于获取用户请求,在通过所述用户请求验证为即时通信用户后,转发所述用户请求到后端web服务器;
28.所述建立连接模块用于响应于后端web服务器的用户请求,在响应数据符合预设
格式的前提下,向客户端服务器返回加载即时通信客户端脚本的请求;响应于客户端服务器执行所述即时通信客户端脚本,建立与客户端服务器的通信连接;
29.所述通信模块用于获取用户上线消息,并向客户端服务器和后端web服务器均广播用户上线消息;再次获取用户向目的用户发送消息的请求,确定向目的用户发送请求的通道,建立用户和目的用户之间的即时通信。
30.发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
31.本发明还提出了一种实现web系统即时通信的方法,运行于反向代理服务器,包括以下步骤:获取用户请求,在通过所述用户请求验证为即时通信用户后,转发所述用户请求到后端web服务器;响应于后端web服务器的用户请求,在响应数据符合预设格式的前提下,向客户端服务器返回加载即时通信客户端脚本的请求;响应于客户端服务器执行所述即时通信客户端脚本,建立与客户端服务器的通信连接;获取用户上线消息,并向客户端服务器和后端web服务器均广播用户上线消息;再次获取用户向目的用户发送消息的请求,确定向目的用户发送请求的通道,建立用户和目的用户之间的即时通信。基于一种实现web系统即时通信的方法,还提出了一种实现web系统即时通信的装置和系统。本发明基于java的netty框架开发具有反向代理服务器和即时通信服务器功能的应用,利用反向代理服务器的功能,在代理的web应用返回的页面中植入脚本代码,通过脚本代码实现在各web页面中创建对话窗口以及相应的发送接收消息功能;利用即时通信的服务器功能。本发明接收各页面客户端发送的消息;推送到各页面客户端消息能够给基于web的业务系统快速的增加及时通讯功能,同时也可以跨多个web系统实现即时通信功能,无需对web系统进行代码改造。
附图说明
32.如图1为本发明实施例1即时通信验证的示意图;
33.如图2为本发明实施例1即时通信客户端脚本植入的示意图;
34.如图3为本发明实施例1即时通信过程示意图;
35.如图4为本发明实施例2一种实现web系统即时通信的装置示意图;
36.如图5为本发明实施例3一种实现web系统即时通信的系统示意图。
具体实施方式
37.为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
38.实施例1
39.本发明实施例1提出了一种实现web系统即时通信的方法,解决已经建设完成的web系统需要增加即时通信功能时,无需对系统进行代码修改即可增加即时通信功能。
40.基于java的netty框架开发具有反向代理服务器和即时通信服务器功能的应用,利用反向代理服务器的功能,在代理的web应用返回的页面中植入脚本代码,通过脚本代码实现在各web页面中创建对话窗口以及相应的发送接收消息功能;利用即时通信的服务器功能。接收各页面客户端发送的消息;推送到各页面客户端消息。
41.其中,netty是由jboss提供的一个java开源框架,现为github上的独立项目。netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
42.该方法运行于反向代理服务器,反向代理服务器主要实现对所有web请求和相应消息体的拦截及修改,包括以下步骤:
43.获取用户请求,在通过所述用户请求验证为即时通信用户后,转发用户请求到后端web服务器;
44.响应于后端web服务器的用户请求,在响应数据符合预设格式的前提下,向客户端服务器返回加载即时通信客户端脚本的请求;响应于客户端服务器执行即时通信客户端脚本,建立与客户端服务器的通信连接;
45.获取用户上线消息,并向客户端服务器和后端web服务器均广播用户上线消息;再次获取用户向目的用户发送消息的请求,确定向目的用户发送请求的通道,建立用户和目的用户之间的即时通信。
46.如图1为本发明实施例1即时通信验证的示意图;
47.获取用户未登录状态下的页面请求,如果页面请求中包含即时通信的登录标识,向客户端服务器返回即使通信登录页面;本技术中判断用户的cookie是否包含有特定的即时通信用户登录标识(此处我们定义标识为jstx_user=用户名),如果有此标识,则说明是已经登录到即时通信的用户端。如果无此标识,则说明尚未登录即时通信的用户端,直接返回登录即时通信的用户端页面。
48.响应于用户登录,从提交路径中获取用户密码,并与系统数据库的用户密码进行对比,如果比如成功,则设置用户为已登录状态,并向客户端服务器发送重定向消息;此处定义路径为/jstx_dl,需要避免与所代理的web应用的路径重复),反向代理服务器判断提交路径为/jstx_dl,从提交信息中取出用户密码与系统数据库的用户密码进行比对,比对成功后在http响应头中设置cookie:jstx_user=用户名;同时设置用户为已登录状态;返回浏览器重定向到客户端服务器。
49.响应于二次页面请求,如果用户状态为已登录,则将二次页面请求转发至后端web服务器。客户端服务器收到重定向的响应后,按照http协议设置cookie jstx_user=用户名,然后重新向web应用发起请求,反向代理服务器拦截到此请求后,判断用户的cookie是否包含有特定的即时通信用户登录标识(此处我们定义标识为jstx_user=用户名),如果有此标识,则说明是已经登录到即时通信客户端的用户,按照反向代理服务器的功能将请求发送到后端web服务器。
50.如图2为本发明实施例1即时通信客户端脚本植入的示意图;即时通信的通讯操作与信息展示界面是依赖于用户的web系统的页面,可以通过后台的参数设置或模糊匹配方式指定哪些页面可以具有即时通信功能。为了实现在web页面中增加即时通信的功能,需要反向代理服务器对所有的页面进行拦截,并根据规则对部分响应页面植入即时通信的脚本
代码。
51.即时通信客户端脚本植入之后建立与反向代理服务器的通信连接的过程详细包括:反向代理服务器响应于后端web服务器的用户请求,在响应数据符合预设格式的前提下,将引导脚本植入到响应数据中;向客户端服务器返回包含引导脚本的界面;客户端服务器执行所述引导脚本,在判断符合加载即时通信客户端脚本的条件下,加载即时通信客户端脚本;所述引导脚本用于引导加载即时通信客户端脚本;
52.反向代理服务器响应于即时通信客户端脚本的执行,将用户标识更新至即时通信客户端脚本中,并返回至客户端服务器;客户端服务器执行即时通信客户端脚本,建立与反向代理服务器的通信连接。
53.图2中,用户使用浏览器访问使用本发明的反向代理服务器代理的某个应用的页面:如http://abc.com/app/a.html;反向代理服务器拦截到请求,通过前述的验证后将请求直接转发到后端web服务器,后端web服务器将响应数据返回给反向代理服务器,反向代理服务器判断返回的content_type是否为text/html格式,页面url是否符合设置的规则,如果以上都符合则将引导脚本植入到返回的响应数据中。
54.引导脚本是一段js代码,主要判断此dom的窗口大小是否大于特定值,是否是顶层窗口。
55.客户端服务器接收到响应后,渲染应用的页面,同时引导脚本开始执行,如果符合加载条件(如dom窗口大于特定值,同时也是顶层窗口),则异步加载即时通信客户端脚本。
56.本发明的反向代理服务器接收到信息后,将用户的标识更新到即时通信客户端脚本后返回给客户端服务器;客户端服务器接收到响应后在页面中创建即时通信的对话窗口,与反向代理服务器建立websocket连接。
57.如图3为本发明实施例1即时通信过程示意图;图3中采用用户a给用户b发送消息来说明通讯过程。
58.用户a通过前述步骤已经将即时通信客户端脚本执行完毕,客户端服务器和反向代理服务器建立连接。
59.用户a与反向代理服务器建立连接后首先要发送一个用户上线的消息给反向代理服务器。反向代理服务器收到请求后广播用户a上线消息,用户a和用户b接收到消息后更新本地即时通信客户端脚本的用户列表。
60.用户a选择列表中的用户b进行消息发送,即时通信客户端脚本会将此消息封装后发送给反向代理服务器,封装的消息包括发送人,接收人,消息内容;反向代理服务器接收到封装消息后解析内容,取出接收人,从反向代理服务器的websocket客户端通道找到用户b的所有信道,将消息发送给用户b的所有即时通信客户端脚本。用户b的每个即时通信客户端脚本接收到消息后展示出用户b发送的信息。
61.本发明实施例1提出的一种实现web系统即时通信的方法,能够给基于web的业务系统快速的增加及时通讯功能。同时也可以跨多个web系统实现即时通信功能。无需对web系统进行代码改造。
62.实施例2
63.基于本发明实施例1提出的一种实现web系统即时通信的方法,本发明实施例2还提出了一种实现web系统即时通信的装置,如图4为本发明实施例2一种实现web系统即时通
信的装置示意图;该装置包括客户端服务器、反向代理服务器和后端web服务器;
64.客户端服务器用于发出页面请求,在用户请求验证时,通过即时通信登录用户名和密码进行登录;以及在接收到反向代理服务器发出的加载即时通信客户端脚本的请求时;加载即时通信客户端脚本,建立与反向代理服务器之间的通信连接;以及发出即时通信的请求;
65.反向代理服务器用于获取用户请求,在通过用户请求验证为即时通信用户后,转发所述用户请求到后端web服务器;响应于后端web服务器的用户请求,在响应数据符合预设格式的前提下,向客户端服务器返回加载即时通信客户端脚本的请求;响应于客户端服务器执行所述即时通信客户端脚本,建立与客户端服务器的通信连接;获取用户上线消息,并向客户端服务器和后端web服务器均广播用户上线消息;再次获取用户向目的用户发送消息的请求,确定向目的用户发送请求的通道,建立用户和目的用户之间的即时通信;
66.后端web服务器用于反馈响应数据;以及在建立即时通信连接后从页面展示即时通信的消息。
67.本发明实施例2中提出的一种实现web系统即时通信的装置中每个模块的实现详细过程可参照实施例1中的过程。
68.在即时通信验证阶段:
69.客户端服务器向反向代理服务器发出未登录状态下请求应用服务器页面;
70.反向代理服务器接收请求,判断用户的cookie是否包含有特定的即时通信用户登录标识(此处我们定义标识为jstx_user=用户名),如果有此标识,则说明是已经登录到即时通信的用户端。如果无此标识,则说明尚未登录即时通信的用户端,直接返回登录即时通信的用户端页面;
71.在客户端服务器,用户填写即时通信用户名和密码进行登录;此处定义路径为/jstx_dl,需要避免与所代理的web应用的路径重复;
72.反向代理服务器判断提交路径为/jstx_dl,从提交信息中取出用户密码与系统数据库的用户密码进行比对,比对成功后在http响应头中设置cookie:jstx_user=用户名;同时设置用户为已登录状态;返回浏览器重定向到客户端服务器;
73.客户端服务器接收到重定向消息之后,重新请求业务页面。
74.反向代理服务器判断cookie中包含即时通信的登录标识,判断用户状态为已登录。
75.在即时通信代码植入阶段:
76.在客户端服务器,用户使用浏览器访问使用本发明的反向代理服务器代理的某个应用的页面:如http://abc.com/app/a.html;
77.反向代理服务器拦截到请求,通过前述的验证后将请求直接转发到后端web服务器;
78.后端web服务器将响应数据返回给反向代理服务器;
79.反向代理服务器判断返回的content_type是否为text/html格式,页面url是否符合设置的规则,如果以上都符合则将引导脚本植入到返回的响应数据a.html中。
80.在客户端服务器,a.html页面展现后,自动执行引脚脚本,如果符合加载条件(如dom窗口大于特定值,同时也是顶层窗口),则向反代理服务器发出异步加载即时通信客户
端脚本的请求。
81.反代理服务器接收到加载即时通信客户端脚本的请求之后,将用户标识更新到即时通信客户端脚本中,并向客户端服务器发出增加用户标识之后的即时通信客户端脚本。
82.客户端服务器执行增加用户标识之后的即时通信客户端脚本,在页面中创建聊天窗口,建立与反向代理服务器的websocket连接。
83.即时通信的过程阶段:
84.在客户端服务器,通过websocket协议发送用户a上线的消息;
85.反代理服务器接收到a上线的消息之后,更新用户列表,向客户端服务器和后端web服务器广播用户a上线消息;
86.客户端服务器接收到a上线消息之后,更新本地用户列表;
87.后端web服务器接收到a上线消息之后,更新本地用户列表;
88.在客户端服务器,用户a向用户b再次发送消息;
89.反代理服务器接收到a向用户b再次发送的消息之后,确定到用户b的通道,用户a发送给用户b的消息;
90.后端web服务器接收到a发送的消息之后在页面中展示。
91.本发明实施例2提出的基于一种实现web系统即时通信的装置,采用java的netty框架开发具有反向代理服务器和即时通信服务器功能的应用,利用反向代理服务器的功能,在代理的web应用返回的页面中植入脚本代码,通过脚本代码实现在各web页面中创建对话窗口以及相应的发送接收消息功能;利用即时通信的服务器功能。本发明接收各页面客户端发送的消息;推送到各页面客户端消息能够给基于web的业务系统快速的增加及时通讯功能,同时也可以跨多个web系统实现即时通信功能,无需对web系统进行代码改造。
92.实施例3
93.基于本发明实施例1提出的一种实现web系统即时通信的方法,本发明实施例3还提出了种实现web系统即时通信的系统,如图5为本发明实施例3一种实现web系统即时通信的系统示意图,包括验证模块、建立连接模块和通信模块;
94.验证模块用于获取用户请求,在通过所述用户请求验证为即时通信用户后,转发所述用户请求到后端web服务器;
95.建立连接模块用于响应于后端web服务器的用户请求,在响应数据符合预设格式的前提下,向客户端服务器返回加载即时通信客户端脚本的请求;响应于客户端服务器执行所述即时通信客户端脚本,建立与客户端服务器的通信连接;
96.通信模块用于获取用户上线消息,并向客户端服务器和后端web服务器均广播用户上线消息;再次获取用户向目的用户发送消息的请求,确定向目的用户发送请求的通道,建立用户和目的用户之间的即时通信。
97.本发明实施例3的一种实现web系统即时通信的系统的详细执行过程可参照本发明实施例3的一种实现web系统即时通信的方法中详细描述的过程,在此不做赘述。本发明实施例3可以实现与本发明实施例1和本发明实施例2相同的技术效果,即本发明实施例3提出的基于一种实现web系统即时通信的系统,采用java的netty框架开发具有反向代理服务器和即时通信服务器功能的应用,利用反向代理服务器的功能,在代理的web应用返回的页面中植入脚本代码,通过脚本代码实现在各web页面中创建对话窗口以及相应的发送接收
消息功能;利用即时通信的服务器功能。本发明接收各页面客户端发送的消息;推送到各页面客户端消息能够给基于web的业务系统快速的增加及时通讯功能,同时也可以跨多个web系统实现即时通信功能,无需对web系统进行代码改造。
98.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本技术实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
99.上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制。对于所属领域的技术人员来说,在上述说明的基础上还可以做出其它不同形式的修改或变形。这里无需也无法对所有的实施方式予以穷举。在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献