summaryrefslogtreecommitdiff
path: root/src/server/rz_api_websocket.py
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-01-04 17:16:12 +0200
committerLV-426 <lv-426@taproot.org.il>2015-01-04 17:16:12 +0200
commitf5494d9233d6f9967c614eef23dee1f29af056c9 (patch)
tree763da6c98efe56acb342aa09d8c4866624c6f32a /src/server/rz_api_websocket.py
parentf1dd537689307329dfe42c88ee2e8fda3355eb84 (diff)
rhizi_api breakup: common, rest & websocket files
Diffstat (limited to 'src/server/rz_api_websocket.py')
-rw-r--r--src/server/rz_api_websocket.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/server/rz_api_websocket.py b/src/server/rz_api_websocket.py
new file mode 100644
index 00000000..15243db6
--- /dev/null
+++ b/src/server/rz_api_websocket.py
@@ -0,0 +1,42 @@
+"""
+Rhizi websocket web API
+"""
+
+import logging
+from socketio.mixins import BroadcastMixin
+from socketio.namespace import BaseNamespace
+
+
+log = logging.getLogger('rhizi')
+
+class WebSocket_Graph_NS(BaseNamespace, BroadcastMixin):
+ """
+ Rhizi '/graph' websocket namespace
+ """
+
+ def __init__(self, *args, **kw):
+ super(WebSocket_Graph_NS, self).__init__(*args, **kw)
+
+ def multicast_msg(self, msg_name, *args):
+ self.socket.server.log_multicast(msg_name)
+ super(WebSocket_Graph_NS, self).broadcast_event_not_me(msg_name, *args)
+
+ def _log_conn(self, prefix_msg):
+ rmt_addr = self.environ['REMOTE_ADDR']
+ rmt_port = self.environ['REMOTE_PORT']
+ sid = self.environ['socketio'].sessid
+ log.info('ws: %s: sid: %s, remote-socket: %s:%s' % (prefix_msg, sid, rmt_addr, rmt_port))
+
+ def recv_connect(self):
+ self._log_conn('conn open')
+
+ def recv_disconnect(self):
+ self._log_conn('conn close')
+
+ def on_diff_commit__topo(self, topo_diff):
+ log.info('ws: rx: topo diff: ' + str(topo_diff))
+ self.multicast_msg('diff_commit__topo', topo_diff)
+
+ def on_diff_commit__attr(self, attr_diff):
+ log.info('ws: rx: attr diff: ' + str(attr_diff))
+ self.multicast_msg('diff_commit__attr', attr_diff)