baidu / sofa-pbrpc

A light-weight RPC implement of google protobuf RPC framework.
Other
2.13k stars 655 forks source link

服务器主动给客户端发送PB协议,该如何实现? #121

Open LazyPlanet opened 7 years ago

LazyPlanet commented 7 years ago

如题,其实在很多时候不是客户端发送的数据请求,比如有几个用户连接,数据改变,服务器主动推送数据,这种情况下,需要如何扩展呢?多谢。

cyshi commented 7 years ago

我觉得这个场景是不是采用发布订阅队列更合适?

在RPC中做的话,可以在RPC Server中附带一个RPC Client发送数据

LazyPlanet commented 7 years ago

您是指扩展RPC吗?

cyshi commented 7 years ago
用户这边启动一个RPC Server 服务这边启动一个RPC Client
RpcClient RpcServer(接受用户的RpcClient请求)
RpcServer(接收推送数据) RpcClient(数据变动时推送给用户)

这样是否清楚?

LazyPlanet commented 7 years ago

我试试。。

imotai commented 7 years ago

@LazyPlanet 也可以client 发送一个异步请求到server 端,然后设置一个超时,超时后重新发送请求;server端 有数据就利用response 发送数据给client了

LazyPlanet commented 7 years ago

有可能是个方法,但是我觉得这么做就有点山寨了,普通的超时如何处理?这个其实更多的可能需要修改底层的处理逻辑了。多谢您。

LazyPlanet commented 5 years ago

既然server和client是长连接,如果client不退出保持长连接,为啥不server直接推送个协议给client呢?

RgznLbq commented 5 years ago

既然server和client是长连接,如果client不退出保持长连接,为啥不server直接推送个协议给client呢?

请问您是怎么解决这个问题的?

Ye-Tian-Zero commented 5 years ago

https://github.com/apache/incubator-brpc/blob/master/docs/cn/server_push.md

Ye-Tian-Zero commented 5 years ago

引用一篇brpc的doc

LazyPlanet commented 5 years ago

@RgznLbq 自己写一套,不用他这个了。网络层可以参考他。