class_docstr: A ZMQ socket invoking a callback in the ioloop
docstr: This method is called in the ioloop thread when a message arrives.
  
  Subclasses should override this method to handle incoming messages.
  It is important to remember that this method is called in the thread
  so that some logic must be done to ensure that the application level
  handlers are called in the application thread.
code: def call_handlers(self, msg):
      """This method is called in the ioloop thread when a message arrives.
  
      Subclasses should override this method to handle incoming messages.
      It is important to remember that this method is called in the thread
      so that some logic must be done to ensure that the application level
      handlers are called in the application thread.
      """
      pass
  
imports: from __future__ import absolute_import
  import atexit
  import errno
  import sys
  from threading import Thread, Event
  import time
  from zmq import ZMQError
  from zmq.eventloop import ioloop, zmqstream
  from traitlets import Type, Instance
  from jupyter_client.channels import HBChannel
  from jupyter_client import KernelClient
label_desc: Use image node_id 8 for calling the ThreadedZMQSocketChannel obj's underlying member method code with example usage: obj.call_handlers(msg) without return types