You might want to take a look at QEWD?  See my recent posting in the article on the IRIS Community Edition for AWS

See also 

https://github.com/robtweed/qewd

https://github.com/robtweed/qewd/tree/master/docker-server-iris-ce-aws

https://github.com/robtweed/qewd/tree/master/up/docs

For an example where it's being used in the NHS (in a pilot) with both desktop and mobile devices: https://ripple.foundation/

Rob

Since its earliest days, QEWD.js has supported WebSocket-based applications - with the WebSocket side of things all taken care of by Node.js (specifically using the socket.io module) rather than Cache/IRIS.

Now that it's quick and easy to try out QEWD with IRIS (by using my extensions for the IRIS Community Edition for AWS), you can see QEWD's Web-Sockets based applications for yourself - the QEWD-Monitor application is one that comes "out of the box" for you.  However, QEWD makes it very easy to create interactive browser/mobile Web-Socket based applications that integrate with IRIS.  See:

https://github.com/robtweed/qewd/blob/master/up/docs/InteractiveApps.md

For information on getting QEWD running wih the IRIS Community Edition for AWS, see:

https://github.com/robtweed/qewd/tree/master/docker-server-iris-ce-aws

OK I seem to be on my own sorting this out...but I seem to have figured it all out.  I had to first adapt the changePassword utility to work on my derived Container, and once that was done I could use the System Management Portal - which showed me that the Callin Interface wasn't enabled.  Once I enabled that, QEWD burst into life :-)

So a question (if anyone out there is listening) - is there a configuration setting somewhere to enable the callin interface automatically when you start up the container, ie to avoid the need to manually enable it via the System Management Portal?

OK Two steps forward, one step back.

When I try to connect to IRIS via the iris.node file and use the db.open() function (from within the container) I get this error

{"ErrorMessage":"Authentication: IRISSecureStart() : Access Denied : Check the audit log for the real authentication error (-15)\n","ErrorCode":-15,"ok":0}

Any ideas what's causing it and how to fix this?

Rob

OK some further digging reveals that the main problem is that QEWD is freezing at the point where it tries to start the Node.js Express web server. 

I'd guess the reason is either:

- something to do with the way Express works internally that clashes with iris-main; or

- port 8080 (which is the port I'm telling Express to listen on) being unavailable because of something IRIS has done

Anyone have any clues?

There's a second problem which is that the Node.js setInterval() function appears to freeze iris-main - something that is pretty critical to have working in QEWD

I've spent quite a number of hours trying to figure out a way to modify the IRIS Container within the AWS Community version so that I can get it to run QEWD.js.  I've been able to build a new Container derived from the one provided in the AWS EC2  instance into which I install Node.js and the QEWD modules, etc. 

However, using the --after parameter in the docker run command, it looks like iris-main is blocking something - the QEWD Node.js startup code appears to just hang, I think because console.log is unable to write to STDOUT - presumably because of something iris-main is doing.  It looks like running iris-main and Node.js together doesn't want to work

I've hit a brick wall with this now and don't know if there's any way to get QEWD working in this AWS EC2 instance, which is disappointing

Fabian

You misunderstand: ewd-document-store is an abstraction built on top of the InterSystems Node.js client, NOT an alternative to it.  QEWD uses the InterSystems Node.js client via ewd-document-store, so once again, QEWD isn't an alternative to the Node.js client, but makes it a lot easier to use with IRIS or Cache.

You can't directly filter objects with IRIS NoSQL storage (aka Global Storage) - instead the trick it to maintain indices to optimise iteration - see Ward's follow-up comment., and study those slide decks I've created that describe how to use QEWD's abstraction of Global Storage.

Ward is correct - ewd-document-store is the way to go.

For background on this module, the thinking behind it and some of the considerations you need to be aware of when using it (which ultimately explain what QEWD.js is all about and why it is what it is), see this presentation that I gave a couple of years ago at the UK Symposium:

https://www.slideshare.net/robtweed/data-persistence-as-a-language-feature

Also see here for pointers to further info on the persistent JSON / Document Database abstraction provided by ewd-document-store:

https://github.com/robtweed/qewd/blob/master/up/docs/InteractiveApps.md#...

Note that ewd-document store will work with any version/build of Cache, Ensemble or Iris

Rob