48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
import eventlet
|
|
import socketio
|
|
|
|
from game import Game
|
|
from players import Player
|
|
|
|
sio = socketio.Server(cors_allowed_origins="*")
|
|
app = socketio.WSGIApp(sio, static_files={
|
|
'/': {'content_type': 'text/html', 'filename': 'index.html'}
|
|
})
|
|
|
|
games = []
|
|
|
|
def advertise_lobbies():
|
|
sio.emit('lobbies', room='lobby', data=[{'name': g.name, 'players': g.players} for g in games if not g.started])
|
|
|
|
@sio.event
|
|
def connect(sid, environ):
|
|
print('connect ', sid)
|
|
sio.enter_room(sid, 'lobby')
|
|
|
|
@sio.event
|
|
def set_username(sid, username):
|
|
sio.save_session(sid, Player(username))
|
|
print(f'{sid} is now {username}')
|
|
advertise_lobbies()
|
|
|
|
@sio.event
|
|
def my_message(sid, data):
|
|
print('message ', data)
|
|
|
|
@sio.event
|
|
def disconnect(sid):
|
|
print('disconnect ', sid)
|
|
|
|
@sio.event
|
|
def create_room(sid, room_name):
|
|
sio.leave_room(sid, 'lobby')
|
|
g = Game(room_name)
|
|
g.add_player(sio.get_session(sid))
|
|
games.append(g)
|
|
sio.enter_room(sid, room_name)
|
|
print(f'{sid} created a room named {room_name}')
|
|
advertise_lobbies()
|
|
|
|
if __name__ == '__main__':
|
|
eventlet.wsgi.server(eventlet.listen(('', 5001)), app)
|