private bool Reconnect(string handle, HoxisProtocolArgs args) { long uid = FF.StringToLong(args["uid"]); List <HoxisConnection> workers = HoxisServer.Ins.GetWorkingConnections(); foreach (HoxisConnection w in workers) { // If already signed in, response the state to let user choose if reconnecting if (w.user == this) { continue; } if (w.user.userID <= 0) { continue; } if (w.user.userID == uid) { userID = w.user.userID; realtimeData = w.user.realtimeData; Continue(); if (DebugRecorder.LogEnable(_logger)) { _logger.LogInfo("reconnect", ""); } HoxisServer.Ins.AffairEntry(C.AFFAIR_RELEASE_CONNECTION, w); return(ResponseSuccess(handle, "ReconnectCb")); } } return(Response(handle, "ReconnectCb", new KVString("code", C.RESP_NO_USER_INFO))); }
public void Reset() { userID = 0; connectionState = UserConnectionState.None; realtimeData = HoxisUserRealtimeData.undef; heartbeatTimer = 0; }
public HoxisUser() { userID = 0; connectionState = UserConnectionState.None; realtimeData = HoxisUserRealtimeData.undef; respTable = new Dictionary <string, ResponseHandler>(); respTable.Add("QueryConnectionState", QueryConnectionState); respTable.Add("ActivateConnectionState", ActivateConnectionState); respTable.Add("SetDefaultConnectionState", SetDefaultConnectionState); respTable.Add("SignIn", SignIn); respTable.Add("SignOut", SignOut); respTable.Add("Reconnect", Reconnect); respTable.Add("RefreshHeartbeat", RefreshHeartbeat); }