public async Task ProcessWebSocket(HttpContext context, WebSocket webSocket) { var connection = new Connection(context, webSocket); Console.WriteLine("Connect: {0}", context.Connection.RemoteIpAddress); var cancelToken = CancellationToken.None; var buffer = new byte[1024]; WebSocketReceiveResult received = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), cancelToken); while (!webSocket.CloseStatus.HasValue) { string text = System.Text.Encoding.UTF8.GetString(buffer, 0, received.Count); Console.WriteLine("Recd: {0}", text); try { Cmd.Parse(text, connection)?.Run(); } catch (Exception ex) { Console.WriteLine("Unhandled exception: {0}", ex); } received = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), cancelToken); } await webSocket.CloseAsync(webSocket.CloseStatus.Value, webSocket.CloseStatusDescription, cancelToken); }
public async Task ProcessWebSocket(HttpContext context, WebSocket webSocket) { var connection = new Connection(context, webSocket); _allConnections.Add(connection); Console.WriteLine("Connect: {0}", context.Connection.RemoteIpAddress); var cancelToken = CancellationToken.None; var buffer = new byte[1024]; WebSocketReceiveResult received = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), cancelToken); while (!webSocket.CloseStatus.HasValue) { string text = System.Text.Encoding.UTF8.GetString(buffer, 0, received.Count); Console.WriteLine("Recd: {0}", text); try { var cmd = Cmd.Parse(text, connection); if (cmd != null) { // TODO: Remove these dependencies from Cmd cmd.SpawnDaemon = _spawnDaemon; cmd.DecayDaemon = _decayDaemon; cmd.Run(); } } catch (Exception ex) { Console.WriteLine("Unhandled exception: {0}", ex); } received = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), cancelToken); } _allConnections.Remove(connection); await webSocket.CloseAsync(webSocket.CloseStatus.Value, webSocket.CloseStatusDescription, cancelToken); }
public LogoutCmd(Connection connection) : base(connection) { AccessLevel = None; }
public UnhideCmd(Connection connection) : base(connection) { }
public RegisterCmd(Connection connection) : base(connection) { this.AccessLevel = None; }
public GetCmd(Connection connection) : base(connection) { }
public DropCmd(Connection connection) : base(connection) { }
public EatCmd(Connection connection) : base(connection) { }
public GiveCmd(Connection connection) : base(connection) { }
public ScoreCmd(Connection connection) : base(connection) { AccessLevel = Guest; }
public AttackCmd(Connection connection) : base(connection) { }
public MoveToSceneCmd(Connection connection) : base(connection) { }
public HideItemCmd(Connection connection) : base(connection) { }
public UseCmd(Connection connection) : base(connection) { }
public PutCmd(Connection connection) : base(connection) { }