From 1949d086a58f062dd249a792f8bf70d4921a4ae3 Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期二, 14 一月 2020 20:52:31 +0800 Subject: [PATCH] fix --- mangos.go | 28 ++++++++++++++++------------ 1 files changed, 16 insertions(+), 12 deletions(-) diff --git a/mangos.go b/mangos.go index a59c188..5f6b441 100644 --- a/mangos.go +++ b/mangos.go @@ -8,10 +8,10 @@ ) type mangosPubSub struct { - url string + url string heartBeatUrl string - pubCh chan Message //publish msg chan - aliveNodes gopherdiscovery.StringSet + pubCh chan Message //publish msg chan + surveyors gopherdiscovery.StringSet recvCh chan Message //recv msg chan } @@ -32,14 +32,13 @@ fmt.Println("newPub err:",err) pub := &mangosPubSub{ - url: publishUrl, + url: publishUrl, heartBeatUrl: heartBeatUrl, - aliveNodes: gopherdiscovery.NewStringSet(), - pubCh: make(chan Message, 50), + surveyors: gopherdiscovery.NewStringSet(), + pubCh: make(chan Message, 50), } var msgCache = make(map[string]Message) //clientMsgCh := make(map[string]chan Message) - cacheNodes := gopherdiscovery.NewStringSet() go func() { for { select { @@ -50,7 +49,7 @@ // ch <- msg // } //} - if cacheNodes.Cardinality() >0 { + if pub.surveyors.Cardinality() >0 { sendB, _ := json.Marshal(msg) discoveryServer.PublishMsg(string(sendB)) } @@ -62,8 +61,8 @@ // clientMsgCh[nodeId] = make(chan Message) // } //} - removedNodes := cacheNodes.Difference(nodeIds) - addedNodes := nodeIds.Difference(cacheNodes) + removedNodes := pub.surveyors.Difference(nodeIds) + addedNodes := nodeIds.Difference(pub.surveyors) if len(nodeIds.ToSlice()) >0 { if addedNodes.Cardinality() >0 { //鏈夋柊鑺傜偣涓婄嚎鐨勬椂鍊欙紝闇�瑕佸彂涓�娆℃秷鎭紝鑺傜偣绂荤嚎鐨勬椂鍊欎笉鐢ㄧ fmt.Println("removedNodes:", removedNodes, "addedNodes:", addedNodes) @@ -74,9 +73,9 @@ } } } - cacheNodes = nodeIds + pub.surveyors = nodeIds } else {//璁㈤槄鑰呭叏閮ㄩ樀浜� - cacheNodes = nodeIds + pub.surveyors = nodeIds time.Sleep(10 * time.Millisecond) } } @@ -98,6 +97,7 @@ url:subcribeUrl, heartBeatUrl: heartBeatUrl, recvCh: make(chan Message,50), + surveyors: gopherdiscovery.NewStringSet(), } go func() { peers, _ := client.Peers() @@ -127,6 +127,10 @@ return false } +func (ps *mangosPubSub) Surveyor() []string { + return ps.surveyors.ToSlice() +} + func (ps *mangosPubSub) Publish(msg Message) { ps.pubCh <- msg } -- Gitblit v1.8.0