class_docstr: A ZMQ socket invoking a callback in the ioloop
docstr: Queue a message to be sent from the IOLoop's thread.
  
  Parameters
  ----------
  msg : message to send
  
  This is threadsafe, as it uses IOLoop.add_callback to give the loop's
  thread control of the action.
code: def send(self, msg):
      """Queue a message to be sent from the IOLoop's thread.
  
      Parameters
      ----------
      msg : message to send
  
      This is threadsafe, as it uses IOLoop.add_callback to give the loop's
      thread control of the action.
      """
  
      def thread_send():
          self.session.send(self.stream, msg)
  
      self.ioloop.add_callback(thread_send)
  
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 6 for calling the ThreadedZMQSocketChannel obj's underlying member method code with example usage: obj.send(msg) without return types