Skip to content

Commit 8a25de0

Browse files
author
Jaiden Mispy
committed
Allow slower clients to send multiple subscriptions per message.
1 parent 7dfca5c commit 8a25de0

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

django_socketio/views.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,23 @@ def socketio(request):
5151
if len(message) > 0:
5252
if MESSAGE_LOG_FORMAT is not None:
5353
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:
6171
events.on_message.send(request, socket, context, message)
6272
else:
6373
if not socket.connected():

0 commit comments

Comments
 (0)