/// <summary> /// Determine if request has concrete type and parse it, if type is not expecting - return null /// </summary> public T TryToGetSpecificRequest <T>(DuplexNetworkRequestType type, string json) where T : IWebSocketRequestModel { var data = (json ?? ""); try { switch (type) { case DuplexNetworkRequestType.Chat: return((T)Convert.ChangeType(data.ToObject <ChatSendModel>(), typeof(T))); case DuplexNetworkRequestType.Login: return((T)Convert.ChangeType(data.ToObject <LoginModel>(), typeof(T))); case DuplexNetworkRequestType.UserStatus: return((T)Convert.ChangeType(data.ToObject <DuplexNetworkRequest>(), typeof(T))); } } catch (Exception ex) { //nothing to do. It means prefix is not corresponds to type T } return(default(T)); }
public void OnRequestRecieved(User user, DuplexNetworkRequestType type, string json) { var request = TryToGetSpecificRequest <DuplexNetworkRequest>(type, json); if (request != null) { GetStatus(user, null, broadcastResponse: true); } }
private void WebSocketManager_OnRequestRecieved(User user, DuplexNetworkRequestType type, string json) { var userId = ""; var userName = ""; if (user != null) { userId = user.Id; userName = user.Username; } var logFormat = "Websocket onMessage from Id = {0}, name = {1}: {2}"; var admin = _clients.FirstOrDefault(s => s.User != null && s.User.Id == EnergoServer.AdminId); if (admin != null) { DirectResponse(admin, string.Format(logFormat, userId, userName, json)); } ServerContext.Current.Logger.Log(LogDestination.Console, LogType.Info, logFormat, userId, userName, json); }
public void Chat_OnMessage(User user, DuplexNetworkRequestType type, string json) { ReceiveMessage(user, TryToGetSpecificRequest <ChatSendModel>(type, json)); }