#!/usr/bin/env python # WS server example import eventlet import socketio from actors import ActorManager from events import Events from chat.chat_commands import CommandHandler from users.users import UserManager sio = socketio.Server() app = socketio.WSGIApp(sio) actor_manager = ActorManager() user_manager = UserManager() command_handler = CommandHandler(user_manager.skill_dict) @sio.on('connect') def connect(sid, environ): print("CONNECTED: {}".format(sid)) sio.emit(Events.SYSTEM_MESSAGE.value, {'sender': 'System', 'message': 'Verbunden!'}, room=sid) for user in user_manager.get_users(): sio.emit(Events.USER_ADDED.value, user, room=sid) @sio.on('disconnect') def disconnect(sid): print("DISCONNECTED: {}".format(sid)) name = user_manager.remove_user(sid) sio.emit(Events.USER_REMOVED.value, name) @sio.on(Events.PUBLIC_CHAT.value) def message(sid, data): # print(data) response = command_handler.handle(data['char'], data['message']) # print(response) # print("\n") sio.emit(response.event. value, response.to_json()) @sio.on(Events.NEW_CHARACTER.value) def message(sid, data): print("INCOMING\n", data) actor_manager.add_character(data) sio.emit(Events.NEW_CHARACTER.value, data) @sio.on(Events.USER_EDITED.value) def message(sid, data): print("USER EDITED: ", sid, data) if user_manager.has_user(data['old']): user_manager.remove_user(sid) sio.emit(Events.USER_REMOVED.value, data['old']) name, loaded = user_manager.add_user(data['new']['characterName'], sid) d = data['new'] d['characterLoaded'] = loaded if loaded: d['skills'] = user_manager.get_skills(name) sio.emit(Events.USER_EDITED.value, d, room=sid) sio.emit(Events.USER_ADDED.value, data['new']['characterName']) if __name__ == '__main__': eventlet.wsgi.server(eventlet.listen(('', 3101)), app)