Skip to content

Commit 3e670e6

Browse files
committed
Send completion messages when the sync observer completes / errors out.
1 parent a4eef79 commit 3e670e6

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

graphql_ws/base_sync.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from rx import Observable, Observer
33

44
from .base import BaseSubscriptionServer
5-
from .constants import GQL_CONNECTION_ACK, GQL_CONNECTION_ERROR
5+
from .constants import GQL_COMPLETE, GQL_CONNECTION_ACK, GQL_CONNECTION_ERROR
66

77

88
class BaseSyncSubscriptionServer(BaseSubscriptionServer):
@@ -49,30 +49,33 @@ def on_start(self, connection_context, op_id, params):
4949
op_id,
5050
self.send_execution_result,
5151
self.send_error,
52-
self.on_close,
52+
self.send_message,
5353
)
5454
)
5555
connection_context.register_operation(op_id, disposable)
5656

5757
except Exception as e:
58-
self.send_error(connection_context, op_id, str(e))
58+
self.send_error(connection_context, op_id, e)
59+
self.send_message(connection_context, op_id, GQL_COMPLETE)
5960

6061

6162
class SubscriptionObserver(Observer):
6263
def __init__(
63-
self, connection_context, op_id, send_execution_result, send_error, on_close
64+
self, connection_context, op_id, send_execution_result, send_error, send_message
6465
):
6566
self.connection_context = connection_context
6667
self.op_id = op_id
6768
self.send_execution_result = send_execution_result
6869
self.send_error = send_error
69-
self.on_close = on_close
70+
self.send_message = send_message
7071

7172
def on_next(self, value):
7273
self.send_execution_result(self.connection_context, self.op_id, value)
7374

7475
def on_completed(self):
75-
self.on_close(self.connection_context)
76+
self.send_message(self.connection_context, self.op_id, GQL_COMPLETE)
77+
self.connection_context.remove_operation(self.op_id)
7678

7779
def on_error(self, error):
7880
self.send_error(self.connection_context, self.op_id, error)
81+
self.on_completed()

0 commit comments

Comments
 (0)