From 2d37dd487f0571ce94a0e4e966931dd6697d685f Mon Sep 17 00:00:00 2001 From: Aaron Perley Date: Tue, 11 Oct 2016 02:03:49 -0400 Subject: Add event passing between webapp and show --- webapp/app/__init__.py | 5 +++++ webapp/app/templates/index.html | 2 ++ webapp/app/views.py | 23 ++++++++++++++++------- webapp/run.py | 10 ++++++++-- 4 files changed, 31 insertions(+), 9 deletions(-) (limited to 'webapp') diff --git a/webapp/app/__init__.py b/webapp/app/__init__.py index 29cd22b..3e188ec 100644 --- a/webapp/app/__init__.py +++ b/webapp/app/__init__.py @@ -1,6 +1,11 @@ from flask import Flask import socketio +import Queue + +recv_queue = Queue.Queue() +send_queue = Queue.Queue() + sio = socketio.Server(async_mode='threading') app = Flask(__name__) app.wsgi_app = socketio.Middleware(sio, app.wsgi_app) diff --git a/webapp/app/templates/index.html b/webapp/app/templates/index.html index b0d9bb3..d4d1853 100644 --- a/webapp/app/templates/index.html +++ b/webapp/app/templates/index.html @@ -43,6 +43,8 @@ socket.on('disconnect', function() { console.log('disconnected'); }); + + socket.emit('ready'); }); diff --git a/webapp/app/views.py b/webapp/app/views.py index 4aa2c05..1c68688 100644 --- a/webapp/app/views.py +++ b/webapp/app/views.py @@ -1,11 +1,9 @@ from flask import render_template, request -from app import app, sio +from app import app, sio, send_queue, recv_queue import time import threading -thread = None - @app.route('/') @app.route('/index') def index(): @@ -22,6 +20,14 @@ def connect(sid, environ): @sio.on('spawn', namespace='/spawn') def message(sid, data): print("message ", data) + send_queue.put(('spawn', data)) + +@sio.on('ready', namespace='/spawn') +def ready(sid): + print("got ready message from ", sid) + for event in received_events: + print "sending missed event", event + sio.emit(event[0], event[1], room=sid, namespace='/spawn') @sio.on('disconnect', namespace='/spawn') def disconnect(sid): @@ -29,9 +35,12 @@ def disconnect(sid): connections.remove(sid) +received_events = [] +def recv_events(): + while True: + event = recv_queue.get() + sio.emit(event[0], event[1], namespace='/spawn') + received_events.append(event) -def add_creature(): - time.sleep(5) - sio.emit('new creature', {'name': 'fish1'}, namespace='/spawn') -thread = sio.start_background_task(add_creature) +thread = sio.start_background_task(recv_events) diff --git a/webapp/run.py b/webapp/run.py index b5c8c6f..2290f41 100755 --- a/webapp/run.py +++ b/webapp/run.py @@ -3,5 +3,11 @@ import sys sys.path.append('packages') -from app import app -app.run(threaded=True, host='', port=8000) +import threading + +from app import app, send_queue, recv_queue + +def run_server(): + app.run(threaded=True, host='', port=8000) + +server_thread = threading.Thread(target=run_server) -- cgit v1.3.1