UNPKG

endpointjs

Version:

Endpoint.js enables modules within a web application to discover and use each other, whether that be on the same web page, other browser windows and tabs, iframes, servers and web workers in a reactive way by providing robust discovery, execution and stre

113 lines (87 loc) 3.62 kB
<html> <head></head> <body> <script type="text/javascript"> window.endpointLogLevel = 'trace'; </script> <script src="../build/endpoint.demo.js" type="text/javascript"></script> <p>Console messages will be output to the text box bellow. To see trace information, open the browser console.</p> <a href='#' onclick='createAdapter()'>Step 1: create adapter</a><br> <a href='#' onclick='createFacade()'>Step 2: create facade</a><br> <a href='#' onclick='callFacade()'>Step 3: call facade</a><br> <a href='#' onclick='writeStream()'>Step 4: write stream</a><br> <a href='#' onclick='closeStream()'>Step 5: close stream</a><br> <textarea id='console' style='width: 1000px; height: 500px;'></textarea> <script type="text/javascript"> var adapter; var facade; var inputStream; var obj = { apiFunction: function(input) { console.log('apiFunction called with input: ' + input); var context = adapter.getCurrentContext(); // Emit a test event adapter.getEvents().emit('api-event', 'data'); // Write to the output context.getOutputStream().write(input); // Connect the input to the output. context.getInputStream().pipe(context.getOutputStream()).pipe(context.getInputStream()); return 'returned value'; }, simplePipe: function() { console.log('simplePipe setting up pipe'); var context = adapter.getCurrentContext(); context.getInputStream().pipe(context.getOutputStream()).pipe(context.getInputStream()); } }; function createAdapter() { adapter = window.endpoint.registerAdapter('api-example', '1.0', obj); console.log('Created Adapter'); } function createFacade() { facade = window.endpoint.createFacade('api-example', '1.0'); facade.getEvents().on('api-event', function(event) { console.log('Facade Received Event: ' + event); }); facade.on('ready', function() { console.log('Facade is ready'); }); facade.on('closed', function() { console.log('Facade has closed'); }); console.log('Created Facade'); } function callFacade() { inputStream = facade.getApi().apiFunction("passed parameter") .pipe(facade.getApi().simplePipe()) .pipe(function(chunk, enc, cb) { console.log('transforming value in stream: ' + chunk); this.push(chunk + ' [transformed]'); cb(); }).then(function(result, outputStream) { console.log('got result: ' + result); outputStream.on('readable', function() { var msg; while ((msg = outputStream.read()) !== null) { console.log('read value from output stream: ' + msg); } }); outputStream.on('end', function() { console.log('output stream was forced closed'); }); }).stream(); } function writeStream() { inputStream.write('written data to stream'); } function closeStream() { inputStream.end(); console.log('Closed input stream'); } console.log = function (message) { var cons = document.getElementById('console'); cons.innerHTML += message + '\n'; } </script> </body> </html>