コード例 #1
0
ファイル: GameServer.cs プロジェクト: McBits/DungeonR
        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);
        }
コード例 #2
0
ファイル: GameServer.cs プロジェクト: McBits/DungeonR
        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);
        }
コード例 #3
0
ファイル: Logout.cs プロジェクト: McBits/DungeonR
 public LogoutCmd(Connection connection) : base(connection)
 {
     AccessLevel = None;
 }
コード例 #4
0
ファイル: Unhide.cs プロジェクト: McBits/DungeonR
 public UnhideCmd(Connection connection)
     : base(connection)
 {
 }
コード例 #5
0
ファイル: Register.cs プロジェクト: McBits/DungeonR
 public RegisterCmd(Connection connection) : base(connection)
 {
     this.AccessLevel = None;
 }
コード例 #6
0
ファイル: Get.cs プロジェクト: McBits/DungeonR
 public GetCmd(Connection connection)
     : base(connection)
 {
 }
コード例 #7
0
ファイル: Drop.cs プロジェクト: McBits/DungeonR
 public DropCmd(Connection connection)
     : base(connection)
 {
 }
コード例 #8
0
ファイル: Eat.cs プロジェクト: McBits/DungeonR
 public EatCmd(Connection connection)
     : base(connection)
 {
 }
コード例 #9
0
ファイル: Give.cs プロジェクト: McBits/DungeonR
 public GiveCmd(Connection connection)
     : base(connection)
 {
 }
コード例 #10
0
ファイル: Score.cs プロジェクト: McBits/DungeonR
 public ScoreCmd(Connection connection) : base(connection)
 {
     AccessLevel = Guest;
 }
コード例 #11
0
ファイル: Attack.cs プロジェクト: McBits/DungeonR
 public AttackCmd(Connection connection) : base(connection) { }
コード例 #12
0
ファイル: MoveToScene.cs プロジェクト: McBits/DungeonR
 public MoveToSceneCmd(Connection connection)
     : base(connection)
 {
 }
コード例 #13
0
ファイル: HideItem.cs プロジェクト: McBits/DungeonR
 public HideItemCmd(Connection connection)
     : base(connection)
 {
 }
コード例 #14
0
ファイル: Use.cs プロジェクト: McBits/DungeonR
 public UseCmd(Connection connection)
     : base(connection)
 {
 }
コード例 #15
0
ファイル: Put.cs プロジェクト: McBits/DungeonR
 public PutCmd(Connection connection)
     : base(connection)
 {
 }