This should be done 2 ways:
1) A DisconnectPacket for safe disconnects that clients send on Disconnect()
2) A configurable timeout period on sessions that NetControllers track. If the period has elapsed since the last packet received from the respective session, send a reliable PingPacket. If it isn't sent back, consider the connection lost and invoke Disconnect().
This should be done 2 ways: 1) A DisconnectPacket for safe disconnects that clients send on Disconnect() 2) A configurable timeout period on sessions that NetControllers track. If the period has elapsed since the last packet received from the respective session, send a reliable PingPacket. If it isn't sent back, consider the connection lost and invoke Disconnect().