private void DealHandshake(Proto_Handshake_rsp msg) { if (msg.heartbeat > 0) { heartbeatTimer = new Timer(); heartbeatTimer.Elapsed += SendHeartbeat; heartbeatTimer.Interval = msg.heartbeat * 1000; heartbeatTimer.Enabled = true; heartbeatTimeoutTimer = new Timer(); heartbeatTimeoutTimer.Elapsed += HeartbeatTimeout; heartbeatTimeoutTimer.AutoReset = false; heartbeatTimeoutTimer.Interval = 4 * 1000; } md5 = msg.md5; if (msg.route != null) { route = new List <string>(); for (int i = 0; i < msg.route.Length; i++) { route.Add(msg.route[i]); } } SocketMsg openMsg = new SocketMsg(); openMsg.msgId = state_open; pushMsg(openMsg); }
private void HandleMsg() { if (msgType == 1) // 自定义消息 { int index = (someBytes[0] << 8) | someBytes[1]; if (index < route.Count) { SocketMsg msg = new SocketMsg(); msg.msgId = route[index]; msg.msg = msgBytes; pushMsg(msg); } } else if (msgType == 2) // 握手回调 { string tmpStr = Encoding.UTF8.GetString(msgBytes); Proto_Handshake_rsp handshakeMsg = JsonUtility.FromJson <Proto_Handshake_rsp>(tmpStr); DealHandshake(handshakeMsg); } else if (msgType == 3) // 心跳回调 { if (heartbeatTimeoutTimer != null) { heartbeatTimeoutTimer.Stop(); } } }