An Open Source Node.js framework for building realtime web apps.
- It's a Remote Procedure Call and Remote Event Handling engine which greatly simplifies the interaction between the client side and the server side of a web application - A new kind of service-oriented architecture.
- It's a combination of some of the most popular open source tools and libraries for building realtime apps.
What advantages does nCombo offer over other Node.js realtime frameworks?
|It's the only framework of its kind which offers resource preloading (complete with a progress percentage loading screen) - This is an absolute necessity if you're building a game or a resource intensive app (or one which has a lot of client side source code). The default preloader can be customized to your heart's content.|
|nCombo allows you to manually upgrade your cache version so you can choose when to force an update on clients (or just keep the same version and let the cache expire naturally; you can set a cacheLife via start options). nCombo uses strong URL-based client-side caching (not ETags) so it greatly cuts back on the number of HTTP requests to your nCombo server. Plays well with CDNs.|
|It's the only realtime Node.js framework which can be seamlessly deployed on multiple CPU cores out of the box. It's as simple as setting the 'workers' start option to the number of workers you want to use. All workers are bound to the same session data by default so no special configuration steps are needed.|
Other features include:
|It's really efficient with server resources - Thanks to Node.js' asnyc request handling and Socket.io.|
|Designed to run on multiple CPU cores. By default, one instance of your app will be launched on each CPU core - They will share their data (and sessions) through a shared memory server called nData which will run in parallel on the same machine.|
|Has a clean multitier architecture|
|Significantly reduces development time - It encourages you to split your code over multiple files and it takes care of all the minification and script bundling, caching, gzipping, server-client communication (no more messy AJAX calls)...|
|Realtime communication thanks to Socket.io|
|Allows you to call server-side functions and listen to server-side events from your client-side scripts. Server side functions which can be called from the client side are defined in special Node.js modules inside the app/sims/ directory. To call them, just use $n.local.exec(serverModuleName, methodName, args, callback). To listen to events which come from the server, use $n.local.watch(eventName, handler) - Dispatch them from inside any of your SIMs using req.session.emit(event, data) or req.global.broadcast(event, data) or req.global.emit(sessionID, event, callback). All requests can be filtered (and authenticated) through your own custom middleware functions (that way you can prevent unauthorized clients from watching events or executing specific functions on the server).|
|Seamless app-to-app interaction - Your apps can talk to each other with just one line of code. Use $n.remote.exec(remoteAppURL, simModuleName, data, callback). Listen to remote server events using $n.remote.watch(remoteAppURL, event, handler). Note that the remote app can choose whether or not to let you do this using its middleware functions.|
|Smart caching that refreshes clients when server is restarted.|
|Session management Using default nData or you can add your own such as MongoDB or Redis using middleware..|
|All necessary middleware is included; custom middleware functions can be added optionally.|
|Authentication and authorization via middleware.|
|Comes with a default file upload feature based on Valums AJAX Uploader.|
|Can be extended with third-party node modules and client-side libraries. Inside app/server.node.js, use ncombo.bundle.app.script(), ncombo.bundle.app.style(), ncombo.bundle.app.template(), ncombo.bundle.framework.lib()... To bundle and preload important scipts with your app.|
Included client-side tools and libraries include:
- jQuery (bundled by default)
- Handlebars (bundled by default)
- Async library (bundled by default)
- jQuery UI
- jQuery Cookie
- jQuery QUnit
- Valums AJAX Uploader
- Twitter's Bootstrap
- EaselJS (Graphics library - Ideal for making HTML5 games)
- Less (css)
Please check out the tutorials section to get started with the nCombo framework. If you'd like to get involved in any way, please do not hesitate to contact us on GitHub.
You can get on our mailing list here.