【TARS】PUSH功能

目录

 

0.学习及脚本链接

1.源码路径及可执行程序路径,命令及脚本

2.环境与背景

3.push模式示意图

4.Tars中实现服务端到客户端的push模式

4.1 服务器端

4.2 客户端

5.代码实现

6.服务部署与发布

6.1 服务部署

6.2 编辑服务给出正确的信息

6.3 点击【重启】按钮检查顺便启动服务

7.测试

7.1 查看服务的线程与端口情况

7.2 启动客户端进行测试


0.学习及脚本链接

TarsdocGitHub在线文档-Tars的push功能

TARS基金会CSDN-可能相关-待确定

【TARS】我的测试环境的常用路径

1.源码路径及可执行程序路径,命令及脚本

/home/muten/module/TARS/TarsFramework/tarscpp/examples/PushDemo/PushServer

/home/muten/module/TARS/TarsFramework/tarscpp/examples/PushDemo/PushClient

/home/muten/module/TARS/TarsFramework/build/bin/PushServer

/home/muten/module/TARS/TarsFramework/build/bin/PushClient

ps -ef | grep PushServer

/script/startPushServer.sh

2.环境与背景

在实际的应用场景中,需要在TARS服务框架中支持其他服务端到客户端的push模式具体程序示例,参见源码中的examples/PushDemo/.

3.push模式示意图

黑色实体箭头代表了一般情况下的数据流向:
(1)数据(客户端);
(2)请求包的编码器(客户端);
(3)协议解析器(服务端);
(4)doRequest协议处理器(服务端);
(5)生成返回数据(服务端);
(6)响应包的解码器(客户端);
(7)响应数据(客户端).
其中请求包的编码器(客户端)负责对客户端发送的数据进行打包编码,协议解析器(服务端)负责对收到的数
据进行解包并交给协议处理器(服务端)去处理并生成返回数据,而响应包的解码器(客户端)负责对返回的数
据进行解码.

PUSH模式下:
淡水红色的箭头代表客户端访问服务端;
tiffany蓝的箭头代表服务端向客户端push消息;

4.Tars中实现服务端到客户端的push模式

4.1 服务器端

对于服务端,首先服务端需要按照开发第三方协议的模式(即非tars协议),实现协议包的解析器,并将
其加载到服务中,同时需要建立一个非TARS框架的服务对象,该类继续继承TARS框架的Servant类,通过
重载Servant类中的doRequest方法建立客户端和服务端之间的协议处理器,同时在该方法中保存连接到服
务端的客户信息,以便服务端向客户端push消息,另外需要重载Servant类中的doClose方法,在服务器得
知客户关闭连接后,释放doRequest方法中保存的客户信息,这样就可以不需要对该客户进行push消息。
另外,服务端需要建立一个专门用于向客户端push消息的线程。

4.2 客户端

对应客户端,首先要按照第三方协议的模式,实现协议包的编解码函数,并将其设置到相应的ServantProxy
代理的协议解析器中,通过ServantProxy类tars_set_protocol方法实现;然后需要自定义一个回调类,该
类继承ServantProxyCallback类,(因为服务端push消息给客户端时,客户端收到消息是异步的,所以客
户端对消息的处理以异步方法进行),同时需要重载其中的onDispatch方法,在该方法中,对客户端和服务
端之间定义的协议进行解析处理;最后需要new一个上面自定义的回调类,然后将其作为参数传入
ServantProxy的tars_set_push_callback方法中.另外,客户端需要定期的发送消息给服务端(相当于心跳
包),以便告诉服务端,客户端是存活的(因为服务端在一定时间内没收到来自客户端的消息,会自动关闭其
之间的连接).另外,在服务端与客户端push模式交互之前,客户端要访问服务,需要通过调用ServantProxy
类的rpc相关函数。

5.代码实现

https://github.com/TarsCloud/TarsCpp/tree/master/examples/PushDemo

或者

TarsdocGitHub在线文档-----------建议使用这个代码,做适当的修改即可(改IP和端口即可)

6.服务部署与发布

6.1 服务部署

6.2 编辑服务给出正确的信息

6.3 点击【重启】按钮检查顺便启动服务

7.测试

7.1 查看服务的线程与端口情况

7.2 启动客户端进行测试

猜你喜欢

转载自blog.csdn.net/Edidaughter/article/details/114485097