summaryrefslogtreecommitdiff
path: root/events.py
diff options
context:
space:
mode:
Diffstat (limited to 'events.py')
-rw-r--r--events.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/events.py b/events.py
index 4759a19..451e6f0 100644
--- a/events.py
+++ b/events.py
@@ -2,11 +2,13 @@ import zmq, json
from config import config
def EventSubscriber(app, environ, start_response, path):
+ session = 'session-' + environ['sessionid']
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect(config.get('event_subscriber'))
socket.setsockopt(zmq.SUBSCRIBE, 'cached')
socket.setsockopt(zmq.SUBSCRIBE, 'recoding')
+ socket.setsockopt(zmq.SUBSCRIBE, session)
start_response('200 OK', [('Content-Type', 'text/event-stream')])
yield ': event source stream\n\n'
@@ -18,7 +20,12 @@ def EventSubscriber(app, environ, start_response, path):
break
message = socket.recv()
address, message = message.split(None, 1)
- if address in ('cached', 'recoding'):
+
+ # split session-specific messages
+ if address == session:
+ address, message = message.split(None, 1)
+
+ if address in ('cached', 'recoding', 'play'):
data = json.dumps({'type': address, 'path': message})
yield 'data: {0}\n\n'.format(data)
@@ -36,4 +43,7 @@ class EventPublisher(object):
def cached(self, path):
self.socket.send('cached {0}'.format(path))
+ def play(self, session, path):
+ self.socket.send('session-{0} play {1}'.format(session, path))
+
event_pub = EventPublisher()