server.py 2.1 KB

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