Disconnect a client. :param sid: Session ID of the client. :param namespace: The Socket.IO namespace to disconnect. If this argument is omitted the default namespace is used. :param ignore_queue: Only used when a message queue is configured. If
(self, sid, namespace=None, ignore_queue=False)
| 383 | return _session_context_manager(self, sid, namespace) |
| 384 | |
| 385 | def disconnect(self, sid, namespace=None, ignore_queue=False): |
| 386 | """Disconnect a client. |
| 387 | |
| 388 | :param sid: Session ID of the client. |
| 389 | :param namespace: The Socket.IO namespace to disconnect. If this |
| 390 | argument is omitted the default namespace is used. |
| 391 | :param ignore_queue: Only used when a message queue is configured. If |
| 392 | set to ``True``, the disconnect is processed |
| 393 | locally, without broadcasting on the queue. It is |
| 394 | recommended to always leave this parameter with |
| 395 | its default value of ``False``. |
| 396 | """ |
| 397 | namespace = namespace or '/' |
| 398 | if ignore_queue: |
| 399 | delete_it = self.manager.is_connected(sid, namespace) |
| 400 | else: |
| 401 | delete_it = self.manager.can_disconnect(sid, namespace) |
| 402 | if delete_it: |
| 403 | self.logger.info('Disconnecting %s [%s]', sid, namespace) |
| 404 | eio_sid = self.manager.pre_disconnect(sid, namespace=namespace) |
| 405 | if eio_sid in self._binary_packet: |
| 406 | del self._binary_packet[eio_sid] |
| 407 | self._send_packet(eio_sid, self.packet_class( |
| 408 | packet.DISCONNECT, namespace=namespace)) |
| 409 | self._trigger_event('disconnect', namespace, sid, |
| 410 | self.reason.SERVER_DISCONNECT) |
| 411 | self.manager.disconnect(sid, namespace=namespace, |
| 412 | ignore_queue=True) |
| 413 | |
| 414 | def shutdown(self): |
| 415 | """Stop Socket.IO background tasks. |