docstr: Attach the Socket.IO webserver to the given Sanic instance.
  
  :param app: Instance of :class:`sanic.app.Sanic` class
  :param options: Options to be used while registering the
      blueprint into the app.
docstr_tok: ["Attach","the","Socket.IO","webserver","to","the","given","Sanic","instance",".",":","param","app",":","Instance","of",":","class",":","`","sanic.app.Sanic","`","class",":","param","options",":","Options","to","be","used","while","registering","the","blueprint","into","the","app","."]
code: def register(self, app: Sanic, options: Dict[Text, Any]) -> None:
      """Attach the Socket.IO webserver to the given Sanic instance.
  
      :param app: Instance of :class:`sanic.app.Sanic` class
      :param options: Options to be used while registering the
          blueprint into the app.
      """
      self.ctx.sio.attach(app, self.ctx.socketio_path)
      super().register(app, options)
  
imports: import logging
  import uuid
  import json
  from typing import Any, Awaitable, Callable, Dict, Iterable, List, Optional, Text
  import rasa.core.channels.channel
  from rasa.core.channels.channel import InputChannel, OutputChannel, UserMessage
  import rasa.shared.utils.io
  from sanic import Blueprint, response, Sanic
  from sanic.request import Request
  from sanic.response import HTTPResponse
  from socketio import AsyncServer
label_desc: Use image node_id 2 for calling the SocketBlueprint obj's underlying member method code with example usage: obj.register(app, options) without return types