master
1
2# pip install geojson tornado pyzmq
3
4import tornado.httpserver
5import tornado.websocket
6import tornado.ioloop
7import tornado.web
8
9import zmq
10from zmq.eventloop import ioloop
11from zmq.eventloop.zmqstream import ZMQStream
12ioloop.install()
13
14
15class WSHandler(tornado.websocket.WebSocketHandler):
16 def __init__(self):
17 active_ws = []
18 ctx = zmq.Context()
19 s = ctx.socket(zmq.SUB)
20 s.connect('tcp://127.0.0.1:5000')
21 s.setsockopt(zmq.SUBSCRIBE, "")
22 stream = ZMQStream(s)
23
24 def echo(msg):
25 print "receiving message: %s" % msg
26 for socket in socket_connections:
27 socket.write_message(msg[0])
28 stream.on_recv(echo)
29
30 def open(self):
31 print 'new connection'
32
33 def on_message(self, message):
34 print 'message received %s' % message
35
36 def on_close(self):
37 print 'connection closed'
38
39
40if __name__ == "__main__":
41
42 #parameters
43 ws_port = 8888
44 zmq_sub = 'tcp://127.0.0.1:5000'
45 application = tornado.web.Application([
46 (r'/ws', WSHandler),
47 ])
48 http_server = tornado.httpserver.HTTPServer(application)
49 http_server.listen(ws_port)
50 tornado.ioloop.IOLoop.instance().start()