mirror of
https://github.com/django/daphne.git
synced 2025-07-13 17:32:17 +03:00
Mostly-complete middleware version
This commit is contained in:
parent
dcfaf4122b
commit
0fcb93acc2
|
@ -38,7 +38,6 @@ class Channel(object):
|
||||||
raise TypeError("You can only send dicts as content on channels.")
|
raise TypeError("You can only send dicts as content on channels.")
|
||||||
self.channel_layer.send(self.name, content)
|
self.channel_layer.send(self.name, content)
|
||||||
message_sent.send(sender=self.__class__, channel=self.name, keys=list(content.keys()))
|
message_sent.send(sender=self.__class__, channel=self.name, keys=list(content.keys()))
|
||||||
print("didsig", self.name)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
|
@ -2,6 +2,7 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
import importlib
|
import importlib
|
||||||
import threading
|
import threading
|
||||||
|
import warnings
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from .exceptions import DenyConnection
|
from .exceptions import DenyConnection
|
||||||
|
@ -48,14 +49,18 @@ class ConvenienceMiddleware(object):
|
||||||
self.consumer = consumer
|
self.consumer = consumer
|
||||||
|
|
||||||
def __call__(self, message):
|
def __call__(self, message):
|
||||||
print("conven", message.channel)
|
|
||||||
if message.channel.name == "websocket.connect":
|
if message.channel.name == "websocket.connect":
|
||||||
# Websocket connect acceptance helper
|
# Websocket connect acceptance helper
|
||||||
try:
|
try:
|
||||||
self.consumer(message)
|
self.consumer(message)
|
||||||
print ("messages sent", self.get_messages())
|
|
||||||
except DenyConnection:
|
except DenyConnection:
|
||||||
message.reply_channel.send({"accept": False})
|
message.reply_channel.send({"accept": False})
|
||||||
|
else:
|
||||||
|
replies_sent = [msg for chan, msg in self.get_messages() if chan == message.reply_channel.name]
|
||||||
|
# If they sent no replies, send implicit acceptance
|
||||||
|
if not replies_sent:
|
||||||
|
warnings.warn("AAAAAAAAAAA", RuntimeWarning)
|
||||||
|
message.reply_channel.send({"accept": True})
|
||||||
else:
|
else:
|
||||||
# General path
|
# General path
|
||||||
return self.consumer(message)
|
return self.consumer(message)
|
||||||
|
@ -67,8 +72,8 @@ class ConvenienceMiddleware(object):
|
||||||
"""
|
"""
|
||||||
cls.runtime_data.sent_messages = []
|
cls.runtime_data.sent_messages = []
|
||||||
|
|
||||||
consumer_started.connect(lambda **kwargs: reset_messages())
|
consumer_started.connect(lambda **kwargs: ConvenienceMiddleware.reset_messages(), weak=False)
|
||||||
consumer_finished.connect(lambda **kwargs: reset_messages())
|
consumer_finished.connect(lambda **kwargs: ConvenienceMiddleware.reset_messages(), weak=False)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def sent_message(cls, channel, keys, **kwargs):
|
def sent_message(cls, channel, keys, **kwargs):
|
||||||
|
@ -78,9 +83,8 @@ class ConvenienceMiddleware(object):
|
||||||
all messages.
|
all messages.
|
||||||
"""
|
"""
|
||||||
cls.runtime_data.sent_messages = getattr(cls.runtime_data, "sent_messages", []) + [(channel, keys)]
|
cls.runtime_data.sent_messages = getattr(cls.runtime_data, "sent_messages", []) + [(channel, keys)]
|
||||||
print ("saved now", cls.runtime_data.sent_messages)
|
|
||||||
|
|
||||||
message_sent.connect(lambda channel, keys, **kwargs: sent_message(channel, keys))
|
message_sent.connect(lambda channel, keys, **kwargs: ConvenienceMiddleware.sent_message(channel, keys), weak=False)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_messages(cls):
|
def get_messages(cls):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user