Here at Tropo, we understand the need for speed.
Consider that in the last few weeks we’ve written one, two, three, four blog posts covering different ways to leverage the unique nature of our scripting platform to build blazing fast, real-time communication apps.
And the promise of speed is one of the things that has us so excited about Node.js – the server side framework for writing JavaScript applications.

We’re constantly adding new features to our Node.js library for building Tropo applications. Just this week we added support for the new Tropo REST APIs that allow you to provision phone/SMS numbers and IM addresses for your apps, and for injecting events into running Tropo apps.
And we’re also working on other goodies to make it easy for Node.js and JavaScript developers to build cutting edge, multi-channel communication apps. You’ll be hearing more about these in the weeks ahead, in future blog posts.
Learning to Node
Node.js is a good candidate for applications that have high concurrency or low latency requirements because of one of it’s chief characteristics – it’s non blocking. When you ask Node.js to perform an operation, it does not wait for the completion of that operation before executing subsequent instructions. This lets you write more efficient (faster) applications because you don’t have to wait for the completion of a specific operation before doing something else.
Node.js is also event-based rather than thread-based. This makes it different from other web technologies (like Apache) that spawn new threads to handle concurrent connections. Node.js uses an event loop instead of threading, which provides a much more efficient approach to concurrency. This makes Node.js particularly well suited for applications that have lots of connections that are non-trivial in length – like real-time applications.
There are add-ons and libraries for other languages that provide a similar construct to building event-based apps; Twisted in Python, EventMachine in Ruby or AnyEvent in Perl.
With Node.js you don’t need to use an external library – events are baked in.
(more…)