groups to about 14 members will be fully meshed (where each member is a direct neighbor of all other members), assuming the peers can make the direct connections (that is, they are not blocked by NATs or firewalls). beyond 14, the probability of a steady-state full mesh drops til about 30 where the probability is 0.
i talk about the differences between "large groups" and "small groups" in my "Advanced P2P with RTMFP: Tips & Tricks" session from MAX 2011. that presentation also describes how the group topology works and how neighbors are chosen. Matthew Kaufman's session from MAX 2009 also talks about group toplogy and neighbor choice. please watch
if you add a peer as a neighbor, it may or may not stay a neighbor; the automatic group topology system may drop it if it isn't needed by the target topology. you can't add a permanent neighbor from ActionScript.
you can observe the NetGroup.Neighbor.Connect/Disconnect events to track the peers that are direct neighbors at any instant.
Oh my. So NetGroup.Neighbor.Connect/Disconnect works only if that client is our Neighbor?
So if network is larger than 30 ppl, i can't rely on NetGroup.Neighbor.Connect/Disconnect events?
To figure out if user is still in network, i'll have to implement pinging implementation?
And if group is larger than 30+ ppl i can't rely on NetGroup.Neighbor.Connect to render users, because there can be users which are not our Neighbors?
Should i use NetGroup.post() to tell everyone that this user is inside network as well?
Thanks Michael. I'll try to watch both movies, i think i have seen one of them earlier, but long ago. Have to work atm.
if the group is larger than 14 members, you can't rely on NetGroup.Neighbor.Connect/Disconnect to tell you that any one peer has definitively joined or left the group.
NetGroup.Neighbor.Connect/Disconnect reports the connection and disconnection of neighbors, which are the peers to which you are directly connected. the group topology algorithm may have you connect and disconnect from the same peers many times in the life of the group. this is normal and desirable.
Thanks Michael. I have implemented connect/disconnect with Group.post().