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 on_close(self):
      # When the socket is closed, deregister the websocket with
      # the FigureManager.
      if self.is_open():
          try:
              self.comm.close()
          except KeyError:
              # apparently already cleaned it up?
              pass
  
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 3 for calling the CommSocket obj's underlying member method code with example usage: obj.on_close() without return types