stergiotis created ZEPPELIN-2643: ------------------------------------ Summary: Adding functionality to hook into WebSocket traffic Key: ZEPPELIN-2643 URL: https://issues.apache.org/jira/browse/ZEPPELIN-2643 Project: Zeppelin Issue Type: Improvement Components: front-end Affects Versions: 0.7.2 Reporter: stergiotis
I would like to propose an extension mechanism which is orthogonal to the concept of interpreters. This mechanism has proven valuable (and simple) to implement certain kind of end-to-end functionalities across interpreters (e.g. enhanced security, auditing, resource and session management, ...). In order to do so it is necessary to hook into the Zeppelin frontend to backend communication. I therefore propose the following: # Introduce a mechanism to late-bind two hook functions upon website instanciation (e.g. try to <script /> a zepplin external resource (in a CORS compliant manner)). Lets call these functions window.hookOutgoing(..) and window.hookIncoming(..). # Modify https://github.com/apache/zeppelin/blob/master/zeppelin-web/src/components/websocketEvents/websocketEvents.factory.js ```javascript websocketCalls.ws.send(JSON.stringify(window.hookOutgoing(data))) // instead of websocketCalls.ws.send(JSON.stringify(data)) ``` and ```javascript payload = angular.fromJson(window.hookIncoming(event.data)) // instead of payload = angular.fromJson(event.data) ``` Remarks: I am aware of the fact that this exposes Zeppelin internal datastructures which may be subject to changes. I am looking for a late-bind option which does not make use of Angular's dependency injection mechanism. -- This message was sent by Atlassian JIRA (v6.4.14#64029)