Browse Source

feat: serializer_args, _create_packet

pull/1521/head
phi 7 months ago
parent
commit
c86a3fdc1e
  1. 7
      src/socketio/base_client.py
  2. 7
      src/socketio/base_server.py

7
src/socketio/base_client.py

@ -38,7 +38,8 @@ class BaseClient:
def __init__(self, reconnection=True, reconnection_attempts=0, def __init__(self, reconnection=True, reconnection_attempts=0,
reconnection_delay=1, reconnection_delay_max=5, reconnection_delay=1, reconnection_delay_max=5,
randomization_factor=0.5, logger=False, serializer='default', randomization_factor=0.5, logger=False, serializer='default',
json=None, handle_sigint=True, **kwargs): json=None, handle_sigint=True, serializer_args=None,
**kwargs):
global original_signal_handler global original_signal_handler
if handle_sigint and original_signal_handler is None and \ if handle_sigint and original_signal_handler is None and \
threading.current_thread() == threading.main_thread(): threading.current_thread() == threading.main_thread():
@ -63,6 +64,7 @@ class BaseClient:
self.packet_class = msgpack_packet.MsgPackPacket self.packet_class = msgpack_packet.MsgPackPacket
else: else:
self.packet_class = serializer self.packet_class = serializer
self.packet_class_args = serializer_args or {}
if json is not None: if json is not None:
self.packet_class.json = json self.packet_class.json = json
engineio_options['json'] = json engineio_options['json'] = json
@ -283,6 +285,9 @@ class BaseClient:
self.callbacks[namespace][id] = callback self.callbacks[namespace][id] = callback
return id return id
def _create_packet(self, *args, **kwargs):
return self.packet_class(*args, **kwargs, **self.packet_class_args)
def _handle_eio_connect(self): # pragma: no cover def _handle_eio_connect(self): # pragma: no cover
raise NotImplementedError() raise NotImplementedError()

7
src/socketio/base_server.py

@ -15,7 +15,7 @@ class BaseServer:
def __init__(self, client_manager=None, logger=False, serializer='default', def __init__(self, client_manager=None, logger=False, serializer='default',
json=None, async_handlers=True, always_connect=False, json=None, async_handlers=True, always_connect=False,
namespaces=None, **kwargs): namespaces=None, serializer_args=None, **kwargs):
engineio_options = kwargs engineio_options = kwargs
engineio_logger = engineio_options.pop('engineio_logger', None) engineio_logger = engineio_options.pop('engineio_logger', None)
if engineio_logger is not None: if engineio_logger is not None:
@ -27,6 +27,7 @@ class BaseServer:
self.packet_class = msgpack_packet.MsgPackPacket self.packet_class = msgpack_packet.MsgPackPacket
else: else:
self.packet_class = serializer self.packet_class = serializer
self.packet_class_args = serializer_args or {}
if json is not None: if json is not None:
self.packet_class.json = json self.packet_class.json = json
engineio_options['json'] = json engineio_options['json'] = json
@ -252,6 +253,10 @@ class BaseServer:
handler = self.namespace_handlers['*'] handler = self.namespace_handlers['*']
args = (namespace, *args) args = (namespace, *args)
return handler, args return handler, args
def _create_packet(self, *args, **kwargs):
return self.packet_class(*args, **kwargs,
**self.packet_class_args)
def _handle_eio_connect(self): # pragma: no cover def _handle_eio_connect(self): # pragma: no cover
raise NotImplementedError() raise NotImplementedError()

Loading…
Cancel
Save