Skip to content

Commit c86a3fd

Browse files
committed
feat: serializer_args, _create_packet
1 parent 5d9e3a7 commit c86a3fd

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/socketio/base_client.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ class BaseClient:
3838
def __init__(self, reconnection=True, reconnection_attempts=0,
3939
reconnection_delay=1, reconnection_delay_max=5,
4040
randomization_factor=0.5, logger=False, serializer='default',
41-
json=None, handle_sigint=True, **kwargs):
41+
json=None, handle_sigint=True, serializer_args=None,
42+
**kwargs):
4243
global original_signal_handler
4344
if handle_sigint and original_signal_handler is None and \
4445
threading.current_thread() == threading.main_thread():
@@ -63,6 +64,7 @@ def __init__(self, reconnection=True, reconnection_attempts=0,
6364
self.packet_class = msgpack_packet.MsgPackPacket
6465
else:
6566
self.packet_class = serializer
67+
self.packet_class_args = serializer_args or {}
6668
if json is not None:
6769
self.packet_class.json = json
6870
engineio_options['json'] = json
@@ -283,6 +285,9 @@ def _generate_ack_id(self, namespace, callback):
283285
self.callbacks[namespace][id] = callback
284286
return id
285287

288+
def _create_packet(self, *args, **kwargs):
289+
return self.packet_class(*args, **kwargs, **self.packet_class_args)
290+
286291
def _handle_eio_connect(self): # pragma: no cover
287292
raise NotImplementedError()
288293

src/socketio/base_server.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class BaseServer:
1515

1616
def __init__(self, client_manager=None, logger=False, serializer='default',
1717
json=None, async_handlers=True, always_connect=False,
18-
namespaces=None, **kwargs):
18+
namespaces=None, serializer_args=None, **kwargs):
1919
engineio_options = kwargs
2020
engineio_logger = engineio_options.pop('engineio_logger', None)
2121
if engineio_logger is not None:
@@ -27,6 +27,7 @@ def __init__(self, client_manager=None, logger=False, serializer='default',
2727
self.packet_class = msgpack_packet.MsgPackPacket
2828
else:
2929
self.packet_class = serializer
30+
self.packet_class_args = serializer_args or {}
3031
if json is not None:
3132
self.packet_class.json = json
3233
engineio_options['json'] = json
@@ -252,6 +253,10 @@ def _get_namespace_handler(self, namespace, args):
252253
handler = self.namespace_handlers['*']
253254
args = (namespace, *args)
254255
return handler, args
256+
257+
def _create_packet(self, *args, **kwargs):
258+
return self.packet_class(*args, **kwargs,
259+
**self.packet_class_args)
255260

256261
def _handle_eio_connect(self): # pragma: no cover
257262
raise NotImplementedError()

0 commit comments

Comments
 (0)