public async Task OnHttpPageRequest(HttpContext httpContext, string filename) { Session session = null; if (httpContext.Request.Headers.TryGetValue("Authorization", out var value)) { string[] data = value[0].Split(" ", 2); if (data.Length == 2 && data[0].Equals("Bearer")) { session = SessionManager.GetSession(data[1]); } } switch (filename.ToLower()) { case "/api/start": await StartServer.OnRequest(httpContext, session); break; case "/api/stop": await StopServer.OnRequest(httpContext, session); break; case "/api/restart": await RestartServer.OnRequest(httpContext, session); break; case "/api/kill": await KillServer.OnRequest(httpContext, session); break; case "/api/stats": await GetServerStatus.OnRequest(httpContext, session); break; case "/api/servers": await GetServers.OnRequest(httpContext, session); break; case "/api/server": await GetServer.OnRequest(httpContext, session); break; case "/api/command": await SendCommand.OnRequest(httpContext, session); break; case "/api/login": await Login.OnRequest(httpContext); break; } }
public override async Task <BatchResult> GetServers <T>(GetServers query, Action <List <T> > pageAction, CancellationToken ct) { throw new NotImplementedException(); var r = await query.PostJson <BatchResult>(new Uri(_uri, "/api/get-servers"), ct).ConfigureAwait(false); return(r); }
private void HandleGetServers(GetServers payload, PayloadWriter writer) { if (!ServerUpdateReceivers.TryAdd(Connection, Account.Id)) { StatusMsg resultPayload1 = Payloads.CreatePayload <StatusMsg>(); resultPayload1.Errorcode = 3; resultPayload1.Errormsg = "Can not get server list"; resultPayload1.TicketId = payload.TicketId; SendReply(writer, resultPayload1); return; } List <Server> servers = Program.Servers.GetServers(); uint ticketId = payload.TicketId; foreach (Server server in servers) { ServerInfo resultPayload1 = CreateServerInfoPayload(server, ticketId); SendReply(writer, resultPayload1); } StatusMsg resultPayload2 = Payloads.CreatePayload <StatusMsg>(); resultPayload2.Errorcode = 0; resultPayload2.Errormsg = null; resultPayload2.TicketId = payload.TicketId; SendReply(writer, resultPayload2); }
public override async Task <BatchResult> GetServers <T>(GetServers query, Action <List <T> > pageAction, CancellationToken ct) { var requestId = Guid.NewGuid(); await MakeSureConnected().ConfigureAwait(false); using (Listen <ReceivedServerPageEvent>(requestId) .Select(x => x.Servers.Cast <T>().ToList()) .Do(pageAction) .Subscribe()) { return (await _servers.Invoke <BatchResult>("GetServers", query, requestId) .MakeCancellable(ct) .ConfigureAwait(false)); } }
private void LoadLocateServers_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "网页源码txt|*.txt|网页源码html|*.html"; ofd.ValidateNames = true; ofd.CheckPathExists = true; ofd.CheckFileExists = true; if (ofd.ShowDialog() == DialogResult.OK) { var servers = GetServers.LoadLocate(ofd.FileName); if (servers != null && servers.Count > 0) { SaveServers(servers); MessageBox.Show("共加载" + (servers.Count - 1) + "个地址!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("读取地址失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
static async Task Main(string[] args) { string server = await GetServers.GetBestInZone(); Console.WriteLine(server); List <ClientWebSocket> sockets = new List <ClientWebSocket>(); ClientWebSocket clientWebSocket = new ClientWebSocket(); // for N sockets.Add(clientWebSocket); await clientWebSocket.ConnectAsync(new Uri($"wss://{server.Replace(":", "/")}"), CancellationToken.None); // game register // game processor GameState gameState = new GameState(); Dictionary <byte, BaseQuery> commands = new Dictionary <byte, BaseQuery> { { 1, new GameStartQuery(1, new Handshake(clientWebSocket)) }, // TODO hz // 2 { 3, new SelfMovement(3) }, { 4, new CaptureHex(4) }, // TODO capture // 5 { 13, new TranslationQuery(13, gameState) }, // 6 // 14 { 7, new DeathQuery(7) }, // TODO decapture // {8, } // 9 // {10, } { 11, new ReceiveUsername(11, gameState) }, { 15, new ReciveSkin(15, gameState) }, // 12 // 99 }; Queue <byte[]> messageQueue = new Queue <byte[]>(); HandleClientInput(clientWebSocket, messageQueue); byte[] buffer = new byte[43]; // TODO how many while (clientWebSocket.State == WebSocketState.Open) { WebSocketReceiveResult text = await clientWebSocket.ReceiveAsync(buffer, CancellationToken.None); byte key = buffer[0]; if (commands.ContainsKey(key)) { if (!text.EndOfMessage) { buffer = await HandleLongMessage(buffer, clientWebSocket); } commands[key].Handle(buffer); } else { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine($"Command {key} is not implemented"); Console.ForegroundColor = ConsoleColor.Gray; } } Console.ReadLine(); }
public abstract Task <BatchResult> GetServers <T>(GetServers query, Action <List <T> > pageAction, CancellationToken ct) where T : ServerInfoModel;
public async Task <BatchResult> GetServers <T>(uint appId, GetServers query, CancellationToken ct, Action <List <T> > act) where T : ServerInfoModel { await StartSteamHelper(appId).ConfigureAwait(false); return(await _session.GetServers(query, act, ct).ConfigureAwait(false)); }
public void getActiveServers(GetServers returnData) { serversCallBack = returnData; HttpHelper.sharedInstance.get(webside,afterGet); }
public Task <BatchResult> GetServers(GetServers query, Guid requestId) => Send(query, requestId);