|
8 | 8 |
|
9 | 9 |
|
10 | 10 | class DjangoChannelConnectionContext(BaseConnectionContext): |
11 | | - def __init__(self, message, request_context=None): |
12 | | - self.message = message |
13 | | - self.operations = {} |
14 | | - self.request_context = request_context |
| 11 | + def __init__(self, message): |
| 12 | + super(DjangoChannelConnectionContext, self).__init__( |
| 13 | + message.reply_channel, |
| 14 | + request_context={"user": message.user, "session": message.http_session}, |
| 15 | + ) |
15 | 16 |
|
16 | 17 | def send(self, data): |
17 | | - self.message.reply_channel.send({"text": json.dumps(data)}) |
| 18 | + self.ws.send({"text": json.dumps(data)}) |
18 | 19 |
|
19 | 20 | def close(self, reason): |
20 | 21 | data = {"close": True, "text": reason} |
21 | | - self.message.reply_channel.send(data) |
| 22 | + self.ws.send(data) |
22 | 23 |
|
23 | 24 |
|
24 | 25 | class DjangoChannelSubscriptionServer(BaseSyncSubscriptionServer): |
25 | 26 | def handle(self, message, connection_context): |
26 | 27 | self.on_message(connection_context, message) |
27 | 28 |
|
28 | 29 |
|
| 30 | +subscription_server = DjangoChannelSubscriptionServer(graphene_settings.SCHEMA) |
| 31 | + |
| 32 | + |
29 | 33 | class GraphQLSubscriptionConsumer(JsonWebsocketConsumer): |
30 | 34 | http_user_and_session = True |
31 | 35 | strict_ordering = True |
32 | 36 |
|
33 | | - def connect(self, message, **_kwargs): |
| 37 | + def connect(self, message, **kwargs): |
34 | 38 | message.reply_channel.send({"accept": True}) |
35 | 39 |
|
36 | | - def receive(self, content, **_kwargs): |
| 40 | + def receive(self, content, **kwargs): |
37 | 41 | """ |
38 | 42 | Called when a message is received with either text or bytes |
39 | 43 | filled out. |
40 | 44 | """ |
41 | | - self.connection_context = DjangoChannelConnectionContext(self.message) |
42 | | - self.subscription_server = DjangoChannelSubscriptionServer( |
43 | | - graphene_settings.SCHEMA |
44 | | - ) |
45 | | - self.subscription_server.on_open(self.connection_context) |
46 | | - self.subscription_server.handle(content, self.connection_context) |
| 45 | + context = DjangoChannelConnectionContext(self.message) |
| 46 | + subscription_server.on_open(context) |
| 47 | + subscription_server.handle(content, context) |
0 commit comments