
New Impress Application Server Functionality for Node.js

Innovations and Versions
Now there are two current versions 0.0.71 and 0.1.2, which can be installed respectively:
npm install impress@0.0.71 # старый стиль приложений с поддержкой развертывания на множество серверов
npm install impress@0.1.2 # новый стиль приложений с сендбоксингом и поддержкой множества серверов
All New Year's holidays were cynically spent on the implementation of sandboxing and deep refactoring of Impress. Up to 80% of the kernel was rewritten and version 0.1.2 was tested on applications written for 0.0.71 with their minimal correction. Functionally, in these versions everything is the same, except for sandboxing and features of writing applications. Refactoring from the old style to the new is very simple and comes down to replacing the call to the application server API. One of these days I will release a small porting instruction, as there are already a sufficient number of external developers using Impress; I would not want to give them such a gift on NG. With the instructions, they will cope with porting in a few minutes, I hope.
So, the functional innovations present in both versions:
- The implementation of interprocess communication in the form of broadcast messages between processes through ZeroMQ ( interserver interaction) and
IPC (within the same server). This is necessary so that users glued to their process can interact with each other. - Added support for WebSocket (it has long been requested) and updated implementation of Server-Sent Events . The demo application has examples of their use. Moreover, these protocols can be accessed on the same port (for example 80), where applications give their pages, just at a different URL, which allows to do without CORS (cross-domain requests, and the other port, for some reason, is already considered a different domain) .
- Many dependencies are removed , and modules are only used if they are installed and added to the configuration. This is all thanks to the geoip-lite library , which suddenly decided to leave 120MB of temporary files and heavy database drivers, which are not all needed right away. I already sent the patch for geoip-lite to the author, it isn’t in npm yet, but to whom it’s critical - install it via github, here it is already available . UPD : just 2014-01-13 the new version hit npm.
- The caching of templates, statics, and business logic processors has been optimized, including tracking of the file system and updating the cache when changing files on the disk have been optimized. And in the new version, caching is completely rewritten to provide screening of applications in sandboxes.
Slide to lure to view the presentation (clickable)

References
On Github: https://github.com/tshemsedinov/impress
At npm: https://npmjs.org/package/impress