Thanks Mike. var output_stream = client.createPipeStream(mimetype, name); >
As I understood the above *output_sream* need not to be created every time data received instead creating it once ( defining globally ) and reusing it will work fine. Am I correct or Is there anything else ? On Fri, Feb 16, 2018 at 11:21 PM, Mike Jumper <[email protected]> wrote: > On Fri, Feb 16, 2018 at 6:18 AM, Amarjeet Singh <[email protected]> > wrote: > >> Hi MIke, >> >> As suggested by you, I have implemented *SIMPLE PROOF-OF-CONCEPT >> *applications >> which stream over separate and differently-named static channels within >> the RDP session. >> >> *STATIC VIRTUAL CHANNEL NAME* : vEcho >> >> *PURPOSE *: Continuously sending data [ Hello ] from Remote to Local >> Browser [ Guacamole Client ] and receiving same data [ Hello ] from Local >> Browser [ Guacamole Client ] to Remote. >> >> RESULT : *It stops sending data after few seconds* whereas It is working >> fine in *mstsc and *other HTML5 solutions. >> >> >> *Guacamole Client Implementation :* >> >> client.onpipe = function(input_stream, mimetype, name) { >>> >>> if (name == "*vEcho*" ){ >>> >>> var reader = new Guacamole.ArrayBufferReader(input_stream); >>> reader.ondata = function(buffer) { >>> var rdpdata = new Uint8Array(buffer); >>> var b64encoded = btoa(String.fromCharCode.apply(null, rdpdata)); >>> console.log("Receiving Data :: Name of the Channel is : - ",name); >>> console.log("Data is : - ",b64encoded); >>> var output_stream = client.createPipeStream(mimetype, name); >>> var writer = new Guacamole.ArrayBufferWriter(output_stream); >>> console.log("Sending Data :: Name of the Channel is : - ",name); >>> console.log("Data is : - ",rdpdata.buffer); >>> *writer.sendData*(rdpdata.buffer); >>> }; >>> >>> } >>> >>> >>> }; >> >> >> > The code you have here will exhaust the number of available streams by > repeatedly creating new pipe streams which are never closed, one for each > blob of data received. You need to invoke writer.sendEnd() to release the > underlying stream when it will no longer be used. There is likely also no > need to create an entirely new stream each time data is received; it would > be more efficient to create the secondary pipe stream only once within > onpipe, reusing that stream while the original stream remains open. > > - Mike > >
