diff options
| author | Yuval Adam <yuv.adm@gmail.com> | 2013-03-10 11:56:01 +0200 |
|---|---|---|
| committer | Yuval Adam <yuv.adm@gmail.com> | 2013-03-10 11:56:01 +0200 |
| commit | 7585a4509aa6df2368ae44ba0a42562f201b1937 (patch) | |
| tree | abb5ab8d12052fed6699b7eb3cefe0264b3364a7 /bitrade.py | |
| parent | 7d578212d4c2684f8e0428ca9792d8b0b8396a5e (diff) | |
Server, websockets and client boilerplate
Diffstat (limited to 'bitrade.py')
| -rw-r--r-- | bitrade.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/bitrade.py b/bitrade.py new file mode 100644 index 0000000..daf7cfd --- /dev/null +++ b/bitrade.py @@ -0,0 +1,66 @@ +# encoding: utf8 +import os + +import tornado.httpserver +import tornado.web +import tornado.websocket +import tornado.ioloop +import tornado.gen +import tornadoredis + + +c = tornadoredis.Client() +c.connect() + + +class MainHandler(tornado.web.RequestHandler): + def get(self): + self.render('index.html', title='OHAI BITRADE SERVER') + + +class OrderHandler(tornado.websocket.WebSocketHandler): + def __init__(self, *args, **kwargs): + super(OrderHandler, self).__init__(*args, **kwargs) + self.listen() + + @tornado.gen.engine + def listen(self): + self.client = tornadoredis.Client() + self.client.connect() + yield tornado.gen.Task(self.client.subscribe, 'test_channel') + self.client.listen(self.on_order) + + def on_message(self, msg): + print 'message' + c.publish('test_channel', msg) + + def on_order(self, msg): + print 'order' + if msg.kind == 'message': + self.write_message(str(msg.body)) + + def close(self): + print 'closed' + self.client.unsubscribe('test_channel') + self.client.disconnect() + + +class Application(tornado.web.Application): + def __init__(self): + handlers = [ + (r'/', MainHandler), + (r'/orders', OrderHandler), + ] + settings = dict( + debug=True, + # template_path=os.path.join(os.path.dirname(__file__), 'templates'), + # static_path=os.path.join(os.path.dirname(__file__), 'static'), + ) + tornado.web.Application.__init__(self, handlers, **settings) + +if __name__ == "__main__": + app = Application() + http_server = tornado.httpserver.HTTPServer(app) + http_server.listen(9000) + print('B⃦ Bitrade server running... (Ctrl-C to stop)') + tornado.ioloop.IOLoop.instance().start() |
