class_docstr: Manages the Comm connection between IPython and the browser (client).
  
  Comms are 2 way, with the CommSocket being able to publish a message
  via the send_json method, and handle a message with on_message. On the
  JS side figure.send_message and figure.ws.onmessage do the sending and
  receiving respectively.
code: def send_binary(self, blob):
      if self.supports_binary:
          self.comm.send({"blob": "image/png"}, buffers=[blob])
      else:
          # The comm is ASCII, so we send the image in base64 encoded data
          # URL form.
          data = b64encode(blob).decode("ascii")
          data_uri = f"data:image/png;base64,{data}"
          self.comm.send({"data": data_uri})
  
imports: from base64 import b64encode
  import io
  import json
  import pathlib
  import uuid
  from ipykernel.comm import Comm
  from IPython.display import display, Javascript, HTML
  from matplotlib import is_interactive
  from matplotlib._pylab_helpers import Gcf
  from matplotlib.backend_bases import _Backend, CloseEvent, NavigationToolbar2
  from .backend_webagg_core import FigureCanvasWebAggCore, FigureManagerWebAgg, NavigationToolbar2WebAgg
  from .backend_webagg_core import TimerTornado, TimerAsyncio
label_desc: Use image node_id 5 for calling the CommSocket obj's underlying member method code with example usage: obj.send_binary(blob) without return types