1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- from SimpleWebSocketServer import SimpleWebSocketServer, WebSocket
- import json
- from citybuilder.messagehandler import MessageHandler
- from citybuilder.player import Player
- connections = {}
- players = {}
- class MainServerSocket(WebSocket):
- def handleMessage(self):
- global config
- try:
- print("Message received: " + self.data)
- message = json.loads(self.data)
- if self not in connections.values():
- if message['type'] == "login":
- if message['username'] in players and players[message['username']].check_password(message['password']):
- connections[message['username']] = self
- self.player = players[message['username']]
- self.player.login(self)
- print(message['username'] + " logged in")
- else:
- self.send_json({'result': 1})
- elif message['type'] == "register":
- if message['username'] not in players:
- connections[message['username']] = self
- players[message['username']] = Player(message['username'], message['password'], config)
- self.player = players[message['username']]
- self.player.login(self)
- else:
- self.send_json({'result': 2})
- else:
- self.send_json({'result': 3})
- else:
- messagehandler.handle_message(self, self.player, message)
- except Exception as e:
- print("Exception in message handling:")
- print(e)
- def send_json(self, data):
- self.sendMessage(json.dumps(data))
- def handleConnected(self):
- print(self.address, 'connected')
- def handleClose(self):
- print(self.address, 'closed')
- def run_server(configuration):
- global messagehandler
- global config
- config = configuration
- messagehandler = MessageHandler(config)
- server = SimpleWebSocketServer('', config['server']['port'], MainServerSocket)
- server.serveforever()
|