获取另一个peer发布的管道通告
如果我(peer)想获取另一个peer发布的管道通告(对方peer使用publish本地发布),那么我应该怎么做呢?
1.如果我知道管道通告的id,可以直接进行搜索(getRemoteAdvertisement)在discoveryListener中获取,一般只会收到一个结果(source重复的不算)
2.如果不知道管道通告id,那么可以搜索管道的其他信息(Name等),这样在discoveryListener中将获得多个结果,判断通告来源source,只要来源是我们所要的peerId的管道通告。
目前只想到这两个方法获取。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
DiscoveryEvent.getSource()返回的是回应discovery的peer的ID,如果某个peer知道另一个peer的管道信息,那么他也会回应,这样,来源peer就不一定是唯一知道自己管道通告的了,这样一想,上面我所说的第二个方法就有问题了。
对第二个方法做一下修改,如果事件来源不能作为判断的条件,那么就只能依靠返回的通告进行判断筛选了,所以,在发布管道通告时要求要加入peer的ID,这样就可以仅依靠discoveryListener中获取的通告来判断是不是我们所要的peer发布的通告了。
----------------------------------------------------------------------------------------------------------------------------------------------------------------
另外,能不能将管道通告的信息放置在PeerAdvertisement中?这样,只要获取Peer通告,那么就知道了相应的管道通告的信息(ID,Name等),再进行搜索的话,返回的结果便更精确了。不过这种方法要发送两次搜索,一次搜索peer,另一次根据pipeid搜索pipe通告。
peer通告中能不能加一个Element存储pipe通告呢?
--------------------------------------------------------------------------------------------------------------------------------------------------------------
试了一下,发现如果直接将管道通告文档以Element的格式放到peerAdvertisement的description中去会将管道通告中的左尖括号“<”用"&"替换掉,这样的话,就不行了,不过可以将PipeID直接放进description中。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
哎,重新看了一下getRemoteAdvertisements函数的说明,发现可以指定peerid,直接向指定的peer发送discovery查询,这样查询管道通告就不会返回很多结果了。
浙公网安备 33010602011771号