[ Before start a discussion, I tell you that my English is not good. If you read kindly, I appreciate you ]
I found a bug from Cirrus network connection in AS3.
But I liked Cirrus very very much, because It needs no AIR Runtime for Server and has UTP Hole punching and etc...
So I just waited and waited that the bug will fixed by ADOBE.
I wanted it very very much.
But a few years laters, the bug still exists.
I explain the bug on this post.
This methos makes Cirrus connection between Two peers finally.
I followed example code sincerely in Adobe document.
But It failed sometimes.( This is the bug! )
## FEATURE ##
1. There is about 40% probability of fail to make a connection.
2. There is no event of disconnection.
3. There are no error messages and any no response of failure of connecting.
4. If server's IP address and client's IP address are same, It succed 100% to make a connection.
5. If a client fails to connect a server once, the client will never succed to connect same server even though It tries again and again.
If the client has to connect the server, the client needs to refresh the program to gets a new Netconnection ID.
6. If a client fails to connect a server, another clients have some probablities to connect to same server.
I made many online games with Cirrus and a lot of users are playing with that.
They need safe connecting method very much.
Please help them and me.
1. P2P connections are not always possible depending on the configuration of NATs and firewalls. for an explanation, please see this posting:
to understand what's really happening, please see
2, 3. there should be an event after a timeout, around 2 minutes.
4. that's expected. the "behind NAT" local addresses should be reachable on the same computer.
5. that's expected. the failure to connect is because a P2P path can't be found. see answer 1 above. however, you don't need to reload the SWF -- you just need to make a new NetConnection to get a new peer ID.
6. that's expected, see answer 1 above.
since P2P connections aren't always possible, you might need to provide a server for client-server-client fallback when P2P doesn't work.