@@ -51,13 +51,23 @@ def socketio(request):
51
51
if len (message ) > 0 :
52
52
if MESSAGE_LOG_FORMAT is not None :
53
53
socket .handler .server .log .write (format_log (request , message ))
54
- if message [0 ] == "__subscribe__" and len (message ) == 2 :
55
- socket .subscribe (message [1 ])
56
- events .on_subscribe .send (request , socket , context , message [1 ])
57
- elif message [0 ] == "__unsubscribe__" and len (message ) == 2 :
58
- events .on_unsubscribe .send (request , socket , context , message [1 ])
59
- socket .unsubscribe (message [1 ])
60
- else :
54
+
55
+ # Handle subscribe and unsubscribe requests, then excise
56
+ # them from the message.
57
+ to_remove = []
58
+ for i in range (0 , len (message )- 1 ):
59
+ if message [i ] == "__subscribe__" :
60
+ socket .subscribe (message [i + 1 ])
61
+ events .on_subscribe .send (request , socket , context , message [i + 1 ])
62
+ to_remove += [i , i + 1 ]
63
+ elif message [i ] == "__unsubscribe__" :
64
+ events .on_unsubscribe .send (request , socket , context , message [i + 1 ])
65
+ socket .unsubscribe (message [i + 1 ])
66
+ to_remove += [i , i + 1 ]
67
+ to_remove .reverse ()
68
+ for index in to_remove : message .pop (index )
69
+
70
+ if len (message ) > 0 :
61
71
events .on_message .send (request , socket , context , message )
62
72
else :
63
73
if not socket .connected ():
0 commit comments