diff options
| author | Olivier Gayot <duskcoder@gmail.com> | 2015-06-04 01:33:06 +0100 | 
|---|---|---|
| committer | Olivier Gayot <duskcoder@gmail.com> | 2015-06-04 01:35:00 +0100 | 
| commit | 1cf58beeafc9dd0db95609cd7c1ce7529cdb9842 (patch) | |
| tree | 8091c2b5ac2f28c9161fad5bbd56d62b4cf9ffc6 | |
| parent | 22f12bdd64bc9417bc9af29844213e7735080144 (diff) | |
add a working main server file
The server is ready to deal with requests from web browsers.
Signed-off-by: Olivier Gayot <duskcoder@gmail.com>
| -rwxr-xr-x | server.py | 54 | 
1 files changed, 49 insertions, 5 deletions
@@ -1,23 +1,67 @@  #!/usr/bin/env python  from websocket_server import WebsocketServer -from CAO_Cards import CAO_Cards +import CAO_GameManager +import CAO_Client +from CAO_Status import cao_error + +import json + +game_manager = CAO_GameManager.CAO_GameManager()  def new_client_handler(client, server): -    print('client ' + client['id'] + ' just joined') +    client['cao_client'] = CAO_Client.CAO_Client(game_manager)  def client_left_handler(client, server): -    print('client just left') +    pass  def message_received_handler(client, server, message): -    print('received from client ' + client['id'] + ': [%s]' % message) +    try: +        json_msg = json.loads(message) +    except: +        res = cao_error('badly formatted json') +    else: +        op = json_msg['op'] +        if op == 'join_game': +            try: +                game_name = json_msg['game_name'] +            except KeyError: +                res = cao_error('field `game_name\' is required') +            else: +                res = client['cao_client'].join_game(game_name) +        elif op == 'view_player_cards': +            res = client['cao_client'].view_player_cards() +        elif op == 'view_played_cards': +            res = client['cao_client'].view_played_cards() +        elif op == 'pick_black_card': +            res = client['cao_client'].pick_black_card() +        elif op == 'designate_card': +            try: +                card_id = json_msg['card_id'] +            except KeyError: +                res = cao_error('field `card_id\' is required') +            else: +                res = client['cao_client'].designate_card(card_id) +        elif op == 'play_white_card': +            try: +                card_id = json_msg['card_id'] +            except KeyError: +                res = cao_error('field `card_id\' is required') +            else: +                res = client['cao_client'].play_white_card(card_id) +        elif op == 'collect_cards': +            res = client['cao_client'].collect_cards() +        else: +            res = cao_error('invalid command') + +    server.send_message(client, res)  def main():      server = WebsocketServer(1236) -      server.set_fn_new_client(new_client_handler)      server.set_fn_client_left(client_left_handler)      server.set_fn_message_received(message_received_handler) +      server.run_forever()  if __name__ == '__main__':  | 
