
# pip install geojson tornado pyzmq

import tornado.httpserver
import tornado.websocket
import tornado.ioloop
import tornado.web

import zmq
from zmq.eventloop import ioloop
from zmq.eventloop.zmqstream import ZMQStream
ioloop.install()

 
class WSHandler(tornado.websocket.WebSocketHandler):
  def __init__(self):
    active_ws = []
    ctx = zmq.Context()
    s = ctx.socket(zmq.SUB)
    s.connect('tcp://127.0.0.1:5000')
    s.setsockopt(zmq.SUBSCRIBE, "")
    stream = ZMQStream(s)

    def echo(msg):
      print "receiving message: %s" % msg
      for socket in socket_connections:
        socket.write_message(msg[0])
    stream.on_recv(echo)

  def open(self):
      print 'new connection'
    
  def on_message(self, message):
      print 'message received %s' % message

  def on_close(self):
    print 'connection closed'


if __name__ == "__main__": 

  #parameters
  ws_port = 8888
  zmq_sub = 'tcp://127.0.0.1:5000'
  application = tornado.web.Application([
    (r'/ws', WSHandler),
  ])
  http_server = tornado.httpserver.HTTPServer(application)
  http_server.listen(ws_port)
  tornado.ioloop.IOLoop.instance().start()
