summaryrefslogtreecommitdiff
path: root/bitrade.py
diff options
context:
space:
mode:
authorYuval Adam <yuv.adm@gmail.com>2013-03-10 11:56:01 +0200
committerYuval Adam <yuv.adm@gmail.com>2013-03-10 11:56:01 +0200
commit7585a4509aa6df2368ae44ba0a42562f201b1937 (patch)
treeabb5ab8d12052fed6699b7eb3cefe0264b3364a7 /bitrade.py
parent7d578212d4c2684f8e0428ca9792d8b0b8396a5e (diff)
Server, websockets and client boilerplate
Diffstat (limited to 'bitrade.py')
-rw-r--r--bitrade.py66
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()