internal bool Disconnect(long connectionId) { WssTransportSession session; if (AcceptedClients.TryRemove(connectionId, out session)) { session.Dispose(); return(true); } return(false); }
protected override SslSession CreateSession() { WssTransportSession newSession = new WssTransportSession(connectionGenerator.GetNewConnectionID(), this); if (PeersCount >= MaxConnections) { newSession.Disconnect(); return(null); } AcceptedClients.TryAdd(newSession.ConnectionId, newSession); return(newSession); }
public TickResponse GetResponse(Credential credential, ClientInfo clientInfo) { try { var request = HttpContext.Current.Request; if (clients == null || clients.Clients == null || clients.Clients.Count == 0) { string config = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Config/AcceptedClients.config"); using (var reader = new StreamReader(config, Encoding.UTF8)) { string xml = reader.ReadToEnd(); clients = XmlUtility.Deserialize <AcceptedClients>(xml); } } string userAgent = request.UserAgent; if (string.IsNullOrEmpty(request.UserAgent)) { userAgent = request.Headers["User-Agent"]; } var client = clients.Clients.FirstOrDefault( x => string.Equals(x.UserAgent, userAgent, StringComparison.OrdinalIgnoreCase)); if (client.UpdateVersion == clientInfo.AppVersion) { return(null); } //先做强制升级的 return(new TickResponse { Action = Action.UpdateApp, Data = new { Version = client.UpdateVersion, Message = "强制升级", Force = true, Url = "http://fchezi.com/download/update.zip" } }); } catch (Exception e) { return(null); } }
public ApiResponse CheckUpdate() { try { var request = HttpContext.Current.Request; if (clients == null || clients.Clients == null || clients.Clients.Count == 0) { string config = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Config/AcceptedClients.config"); using (var reader = new StreamReader(config, Encoding.UTF8)) { string xml = reader.ReadToEnd(); clients = XmlUtility.Deserialize <AcceptedClients>(xml); } } string userAgent = request.UserAgent; if (string.IsNullOrEmpty(request.UserAgent)) { userAgent = request.Headers["User-Agent"]; } var client = clients.Clients.FirstOrDefault( x => string.Equals(x.UserAgent, userAgent, StringComparison.OrdinalIgnoreCase)); if (client == null) { return(new ApiResponse(Metas.SUCCESS, null)); } Client newestClient = client; if (!string.IsNullOrEmpty(client.AppName) && !string.IsNullOrEmpty(client.OS)) { var appClients = clients.Clients.Where(x => (x.AppName == client.AppName && x.OS == client.OS)); newestClient = appClients.OrderByDescending(x => x.InternalVer).FirstOrDefault(); newestClient.Update = newestClient.Update > 0 && newestClient.InternalVer > client.InternalVer ? newestClient.Update : 0; newestClient.InternalVer = newestClient.Update > 0 ? newestClient.InternalVer : client.InternalVer; newestClient.Version = newestClient.Update > 0 ? newestClient.UserAgent.Substring(newestClient.UserAgent.IndexOf("Ver", StringComparison.Ordinal)) : client.UserAgent.Substring(newestClient.UserAgent.IndexOf("Ver", StringComparison.Ordinal)); if (newestClient.Update > 0 && newestClient.Update == 2 && !string.IsNullOrEmpty(newestClient.ForceVer)) { var forceVers = newestClient.ForceVer.Split(','); if (!forceVers.Contains <String>(client.InternalVer.ToString())) { newestClient.Update = 1; } } } else { newestClient.Update = 0; newestClient.Version = newestClient.UserAgent.Substring(newestClient.UserAgent.IndexOf("Ver", StringComparison.Ordinal)); } return(new ApiResponse(Metas.SUCCESS, new { newestClient.AppName, newestClient.ChangeLog, newestClient.FileName, newestClient.FileSize, newestClient.Update, newestClient.Version, newestClient.InternalVer, newestClient.PublishDate, newestClient.UpdateUrl })); } catch (Exception e) { return(new ApiResponse(Metas.UNKNOWN_ERROR, null)); } }
internal bool SendAsync(long connectionId, byte[] buffer) { return(AcceptedClients.ContainsKey(connectionId) && AcceptedClients[connectionId].SendBinaryAsync(buffer, 0, buffer.Length)); }