best way to check other player to disconnect?
Options
in many pausing case, client can disconnect by him self, so there is no problem
but if client lost internet connection, he can't send anything to server and PhotonNetwork.CloseConnection( player ) function is not working to this client ( i tested this is only working for online player in room)
PUN cloud server will kick after 10 second automatically. but i want to kick him in 1~2 second
so i used this way
1. every player set their "ping" and "ping set time" in every second ( using player property, set PhotonNetwork.time )
2. every player check how long time passed after another player set their ping ( with "ping set time" )
3. if another player's "ping set time" is longer than 2~3 second than PhotonNetwork.time, then diable his gameobject (used disable because CloseConnection function not working for offline user )
4. in 3 step if he is a masterclient, change masterclient to other
but this way need to using many msg.
( there is 500 msg / s per room! )
so i want to know best way to check player timeout by other!
but if client lost internet connection, he can't send anything to server and PhotonNetwork.CloseConnection( player ) function is not working to this client ( i tested this is only working for online player in room)
PUN cloud server will kick after 10 second automatically. but i want to kick him in 1~2 second
so i used this way
1. every player set their "ping" and "ping set time" in every second ( using player property, set PhotonNetwork.time )
2. every player check how long time passed after another player set their ping ( with "ping set time" )
3. if another player's "ping set time" is longer than 2~3 second than PhotonNetwork.time, then diable his gameobject (used disable because CloseConnection function not working for offline user )
4. in 3 step if he is a masterclient, change masterclient to other
but this way need to using many msg.
( there is 500 msg / s per room! )
so i want to know best way to check player timeout by other!
0
Comments
-
Hi,
I'll check that value you can watch for players on stream updates, you should definitly avoid waisting events for this.
Bye
Jean0 -
i aksed it to other but they didnt know about it
omg!0 -
Hi,
ok, I don't think there are any variables easily available to know about this.
I haven't experimented on this yet, but I would assume that if you implement serialization yourself, then when you are reading, you could maintain a timer since the last time you deserialized, and if it goes more than 2 or 3 seconds that means the owner is not sending anything and is likely disconnected. It could varies depending on how you've setup your observe options but that would be something to experiment.
Bye,
Jean0 -
ok thank you too replyjeanfabre said:Hi,
ok, I don't think there are any variables easily available to know about this.
I haven't experimented on this yet, but I would assume that if you implement serialization yourself, then when you are reading, you could maintain a timer since the last time you deserialized, and if it goes more than 2 or 3 seconds that means the owner is not sending anything and is likely disconnected. It could varies depending on how you've setup your observe options but that would be something to experiment.
Bye,
Jean
0 -
Best way to check is when RPC from photon view is called , use
PhotonNetwork.networkingPeer.SendOutGoingCommands();
to send 1 last packet in RPC and lose focus.void OnApplicationPause(bool pauseStatus) { isPaused = pauseStatus; photonView.RPC("Reciver", PhotonTargets.All, pauseStatus); PhotonNetwork.networkingPeer.SendOutgoingCommands(); Debug.Log("Pause Firing"); }
1