MCPcopy Create free account
hub / github.com/miguelgrinberg/python-socketio / _handle_connect

Method _handle_connect

src/socketio/server.py:518–565  ·  view source on GitHub ↗

Handle a client connection request.

(self, eio_sid, namespace, data)

Source from the content-addressed store, hash-verified

516 self.eio.send_packet(eio_sid, eio_pkt)
517
518 def _handle_connect(self, eio_sid, namespace, data):
519 """Handle a client connection request."""
520 namespace = namespace or '/'
521 sid = None
522 if namespace in self.handlers or namespace in self.namespace_handlers \
523 or self.namespaces == '*' or namespace in self.namespaces:
524 sid = self.manager.connect(eio_sid, namespace)
525 if sid is None:
526 self._send_packet(eio_sid, self.packet_class(
527 packet.CONNECT_ERROR, data='Unable to connect',
528 namespace=namespace))
529 return
530
531 if self.always_connect:
532 self._send_packet(eio_sid, self.packet_class(
533 packet.CONNECT, {'sid': sid}, namespace=namespace))
534 fail_reason = exceptions.ConnectionRefusedError().error_args
535 try:
536 if data:
537 success = self._trigger_event(
538 'connect', namespace, sid, self.environ[eio_sid], data)
539 else:
540 try:
541 success = self._trigger_event(
542 'connect', namespace, sid, self.environ[eio_sid])
543 except TypeError:
544 success = self._trigger_event(
545 'connect', namespace, sid, self.environ[eio_sid], None)
546 except exceptions.ConnectionRefusedError as exc:
547 fail_reason = exc.error_args
548 success = False
549 except ConnectionRefusedError:
550 fail_reason = {"message": "Connection refused by server"}
551 success = False
552
553 if success is False:
554 if self.always_connect:
555 self.manager.pre_disconnect(sid, namespace)
556 self._send_packet(eio_sid, self.packet_class(
557 packet.DISCONNECT, data=fail_reason, namespace=namespace))
558 else:
559 self._send_packet(eio_sid, self.packet_class(
560 packet.CONNECT_ERROR, data=fail_reason,
561 namespace=namespace))
562 self.manager.disconnect(sid, namespace, ignore_queue=True)
563 elif not self.always_connect:
564 self._send_packet(eio_sid, self.packet_class(
565 packet.CONNECT, {'sid': sid}, namespace=namespace))
566
567 def _handle_disconnect(self, eio_sid, namespace, reason=None):
568 """Handle a client disconnect."""

Callers 1

_handle_eio_messageMethod · 0.95

Calls 5

_send_packetMethod · 0.95
_trigger_eventMethod · 0.95
pre_disconnectMethod · 0.80
connectMethod · 0.45
disconnectMethod · 0.45

Tested by

no test coverage detected