|
|
|
@ -23,7 +23,7 @@ func NewPubSubServerService() *PubSubServerService {
|
|
|
|
|
// Publish 实现发布方法
|
|
|
|
|
func (p *PubSubServerService) Publish(ctx context.Context, req *PublishRequest) (*PublishResponse, error) {
|
|
|
|
|
|
|
|
|
|
log.Printf("[服务中转]{发布} 编号:%s 类型:%s ip地址:%s\n", req.GetId(), req.GetValue(), req.GetIp())
|
|
|
|
|
log.Printf("[服务中转]{发布}编号:%s 类型:%s ip地址:%s\n", req.GetId(), req.GetValue(), req.GetIp())
|
|
|
|
|
|
|
|
|
|
// 发布消息
|
|
|
|
|
p.pub.Publish(req.GetValue())
|
|
|
|
@ -41,12 +41,12 @@ func (p *PubSubServerService) Subscribe(req *SubscribeRequest, stream PubSub_Sub
|
|
|
|
|
// func(v interface{}) 定义函数过滤的规则
|
|
|
|
|
// SubscribeTopic 返回一个chan interface{}
|
|
|
|
|
|
|
|
|
|
log.Printf("[服务中转]{订阅} 编号:%s 类型:%s ip地址:%s\n", req.GetId(), req.GetValue(), req.GetIp())
|
|
|
|
|
log.Printf("[服务中转]{订阅}编号:%s 类型:%s ip地址:%s\n", req.GetId(), req.GetValue(), req.GetIp())
|
|
|
|
|
|
|
|
|
|
ch := p.pub.SubscribeTopic(func(v interface{}) bool {
|
|
|
|
|
|
|
|
|
|
log.Printf("[服务中转]{订阅} 主题:%v\n", v)
|
|
|
|
|
log.Printf("[服务中转]{订阅} 主题:%+v\n", v)
|
|
|
|
|
log.Printf("[服务中转]{订阅}主题:%v\n", v)
|
|
|
|
|
log.Printf("[服务中转]{订阅}主题:%+v\n", v)
|
|
|
|
|
|
|
|
|
|
// 接收数据是string,并且key是以arg为前缀的
|
|
|
|
|
if key, ok := v.(string); ok {
|
|
|
|
@ -57,19 +57,19 @@ func (p *PubSubServerService) Subscribe(req *SubscribeRequest, stream PubSub_Sub
|
|
|
|
|
return false
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
log.Println("[服务中转]{订阅} 工作线:", ch)
|
|
|
|
|
log.Println("[服务中转]{订阅} 当前工作线数量:", p.pub.Len())
|
|
|
|
|
log.Println("[服务中转]{订阅}工作线:", ch)
|
|
|
|
|
log.Println("[服务中转]{订阅}当前工作线数量:", p.pub.Len())
|
|
|
|
|
|
|
|
|
|
// 服务器遍历chan,并将其中信息发送给订阅客户端
|
|
|
|
|
for v := range ch {
|
|
|
|
|
log.Println("[服务中转] for ch:", ch)
|
|
|
|
|
log.Println("[服务中转] for v:", v)
|
|
|
|
|
log.Println("[服务中转]{订阅}for ch:", ch)
|
|
|
|
|
log.Println("[服务中转]{订阅}for v:", v)
|
|
|
|
|
err := stream.Send(&SubscribeResponse{
|
|
|
|
|
Value: v.(string),
|
|
|
|
|
Ip: "",
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Println("[服务中转]{订阅} 任务分配失败 ", err.Error())
|
|
|
|
|
log.Println("[服务中转]{订阅}任务分配失败 ", err.Error())
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|