server.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from SimpleWebSocketServer import SimpleWebSocketServer, WebSocket
  2. import json
  3. from citybuilder import messagehandler
  4. from citybuilder.player import Player
  5. connections = {}
  6. players = {}
  7. class MainServerSocket(WebSocket):
  8. def handleMessage(self):
  9. try:
  10. print("Message received: " + self.data)
  11. message = json.loads(self.data)
  12. if self not in connections.values():
  13. if message['type'] == "login":
  14. if message['username'] in players and players[message['username']].check_password(message['password']):
  15. connections[message['username']] = self
  16. self.player = players[message['username']]
  17. print(message['username'] + " logged in")
  18. else:
  19. self.send_json({result: 1})
  20. elif message['type'] == "register":
  21. if message['username'] not in players:
  22. connections[message['username']] = self
  23. players[message['username']] = Player(message['username'], message['password'])
  24. self.player = players[message['username']]
  25. else:
  26. self.send_json({result: 2})
  27. else:
  28. self.send_json({result: 3})
  29. else:
  30. messagehandler.handle_message(self, self.player, message)
  31. except Exception as e:
  32. print(e)
  33. def send_json(self, data):
  34. self.sendMessage(json.dumps(data))
  35. def handleConnected(self):
  36. print(self.address, 'connected')
  37. def handleClose(self):
  38. print(self.address, 'closed')
  39. def run_server(config):
  40. server = SimpleWebSocketServer('', config['server']['port'], MainServerSocket)
  41. server.serveforever()