Bringing Node.JS WebSockets with Java

To add real time capability with Java, what you can do is through Comet (CometD Framework) or Jetty Continuations, however, these technologies had outdated, made worse performance. And currently most web server framework is based on thread-based, and thread-based does not scale when introducing in real time.

This post introduced us to build another separate server running Node.JS WebSockets, and using Redis to bridge Java and Node.JS based on publish/subscribe model, to plug in real time capability to Java. Java can push the data to Redis, when Node.JS subscribed to Redis, whenever got new data, it broadcasts the data to the WebSockets clients.

Links:

  1.  http://spreadthesource.com/2010/11/bringing-realtime-to-your-java-applications-with-websockets-nodejs-redis-tapestry-5/

socket.io Library for Titanium Mobile

Found a socket.io Library for Titanium Mobile.

https://github.com/nowelium/socket.io-titanium

socket.io Library is originally included in Node.JS, and someone brilliant migrated into Titanium Mobile.

And, currently there is no nowJS implementation for Titanium Mobile. But I investigated nowJS source code it used socket.io, and *maybe* it is possible to migrate into Titanium mobile as well. However, this is not impossible, because Kosso had made it, but just didn’t open source yet.

Showcase on Real time video sharing built on nowJS

I am learning nowJS, a framework to build real time application built on Node.JS, and had made a simple web application that is able to share screen to the other clients in real time. This apps includes client side and server side is 100% completely written in JavaScript.

I had recorded a video and exported into HTML5 Webkit compatible video clip, and included into web page using HTML5 <video> tags. And then, the screens will be copied into HTML5 <canvas>. After that, the magic comes, the screen in HTML5 <canvas> will be real time broadcasted to the other client browsers (tested on Google Chrome, Apple Safari, and Apple Safari Browser runs on iPhone, or webkit browser). I had applied some algorithms to manipulate the video as well. The canvas also allows simple line drawing. At the end, the results of the canvas will broadcast to the other client browsers in real time.

Attached is the showcase video:

 

Fork me on Github: https://github.com/fyhao/Real-time-video-sharing-built-on-nowJS-and-Node.JS

corMVC jQuery single page framework

CorMVC by Ben Nadel is a jQuery-powered Model-View-Controller (MVC) framework that can aide in the development of single-page, web-based applications. CorMVC stands for client-only-required model-view-controller and is designed to be lowest possible entry point to learning about single-page application architecture. It does not presuppose any server-side technologies, or a web server of any kind, and requires no more than a web browser to get up and running.

Real time apps using nowJS

Real time technology is powerful, syncing states between peers in finger tips.

A JavaScript framework built on Node.JS, which named nowJS, provides a very simple, reliable real time feature that easily sync states between client and server, written entirely in JavaScript.

It’s automatically sync the JavaScript variables and functions between clients and servers. Say call client’s functions from server, or call server’s function from client.

Links:

  1. nowJS Official Page http://nowjs.com
  2. nowJS Source code available on Github https://github.com/Flotype/now
  3. Flotype real time infrastructure http://flotype.com
  4. Real time messaging and synchronization using nowJS and Node.JS http://www.bennadel.com/blog/2171-Realtime-Messaging-And-Synchronization-With-NowJS-And-Node-js.htm
  5. nowJS Best Practices http://nowjs.com/bestpractices
  6. nowJS simplifying development of real time apps http://www.building43.com/videos/2011/08/02/nowjs-simplifying-development-of-real-time-apps/

Kranium a lightweight MVC framework for Titanium Mobile

Kranium is a lightweight MVC framework for JavaScript application. Its main aim is to simplify Titanium Mobile development.

Adam Renklint gave a post on getting started for Kranium.

Some advantages Kranium brought over than original Titanium mobile are as following.

  • Build interface elements grouped into tree structure using K as a root namespace, instead of using old ways, we add one label instance, one button instance, and then add one by one into windows. In old way, we cannot know exactly the orders the elements placed, until at the end we add one by one to the window, but using Kranium we can manage it well using the tree structure. (Refer here…)
  • Easily extends the elements instance. It provides an extendable class structure that is able to create our own UI interface element easily. For example, we want to create a label that showing our login status automatically when we log in and log out from our application. We can extend the original label type UI element, and register own custom events to inform the login status and update to the label UI element. (Refer here…)
  • Live updating UI modules. I haven’t tried but it sounded amazing and powerful. It said, built from Livetanium, you are able to see the changes of UI elements immediately on the simulator and the actual device whenever you made changes to the UI files or stylesheets. It is amazing, because currently I only can make change to the UI element to the JavaScript file and then click stop and start the simulator and see the changes and it takes some times, you know, when you design the UI layout, it’s frustrating. At the back end, it implemented Kranium watcher, that is able to monitor the file changes and pipe the changes through Node.JS server to the simulator or actual device in real time and you can see the real time updates of UI element on the simulator or actual device. It said it currently worked well in iOS only. (Refer here…)
  • Simple selector engine. Like jQuery, you can use the selector like $(".label .button").text("test") to modify the attributes of the UI elements. You can even chain the statements to include the other modification. Influenced from jQuery, Kranium also provides other utility methods such as .each(), .filter(), .find(), .parents() with the selector defined to modify the UI elements easily.

Kranium is very powerful as you can see, it made developments of Titanium Mobile easier and even quicker. But, I hoped that we can have a WYSIWYG editor in order to show the UI elements what exactly look liked inside the IDE without running it in the simulator or actual device.