DJS Tutorial

DJS is a distributed object library for Server-WebBrowser communication. This tutorial shows how to create a web application using DJS.

===============

Getting started

  • Creating a DJS connection class

A DJS connection class is where you write the scripts to manipulate the browser-side objects from server. The DJS connection class must be subclass of 'DJS::DJSConnection'. An instance of DJS connection class will be created when the connection between browser and DJS server is established. There are four methods in 'DJS::DJSConnection' that can be overridden to tell DJS what to do.

on_open() - Called when the connection is established. on_error(err) - Called when an browser-side error occurs. on_message(msg) - Called when an message is received from browser.(not implemented) on_close() - Called when the connection is shutdown.(not implemented)

Here is an example:

class MyConnection < DJS::Connection def on_open window.alert "Hello world!" end def on_error(error) p error end end

  • Starting DJS server

After a DJS connection class is defined, you can start DJS server using 'DJS::start(klass)' method. Your DJS connection class must be passed as the argument.

DJS.start(MyConnection, => 127.0.0.1, :port => 8080)

  • Adding DJS library to HTML

Add DJS JavaScript library 'djs.js' in your HTML. And call 'djs.start(host)' to connect to a DJS server.

  • Stopping DJS server

Use 'DJS.stop' to stop a DJS server.

DJS.stop

========

API Docs

  • Module: DJS

    • DJS.start(klass, opts = {})

    Start DJS server.

    Parameters: klass (Class) - A class that extends DJS::Connection opts (Hash) - Options. Default values are as below: :buff_size => 200 - Messages stored before synchronization with browser.

    • DJS.stop

    Stop DJS server.

    • DJS.connections

    Return all DJS connection instances that the DJS server is holding currently.

    Returns: (DJS::Connections) - An DJS::Connections instance that contains all DJS::Connection instances the DJS server is holding currently.

    Examples: DJS.connections.do_something

  • Class: DJS::Connection

    • sync

    Synchronize with browser immediately.

    • window

    A reference for browser-side object 'window'.

Returns: (DJS::ProxyObject) - A DJS::ProxyObject that references to browser-side object 'window'.

Examples: window.alert "Hello world."

  • Class: DJS:ProxyObject

    • sync, to_s, to_f, to_i, to_a, to_h, to_b

    Synchronize with browser immediately and return the true value of the referenced object.

    Returns: (Object) - Primitive type if the referenced object is primitive, otherwise the DJS::ProxyObject itself.

    Examples: value = document.getElementById("text").value.sync

=====

Hints

  • Define a event handler as 'object.event_name = :event_handler_name' Examples: def button_click_handler(event) button = event.srcElement end document.getElementById("button").onclick = :button_click_handler