<commit_before># jQluster - jQuery to remote browsers

**I'm still working on this project. Nothing is stable. Everything may be changed and be broken sometimes. It lacks documentation.**


jQluster is a jQuery plugin that manipulates DOM objects and events in
**other browsers**.

With jQluster, you can

- Get data from DOM objects in other browsers.
- Set data to DOM objects in other browsers.
- Listen to events at DOM objects in other browsers.
- Trigger events at DOM objects in other browsers.
- Perform the above operations via almost the same API as jQuery's.

Are you wondering why you need this, or why I created this? See the
"Motivation" section below.


## Caveat

**DO NOT USE THIS PLUGIN at Web pages with sensitive information**. 

This plugin is very much **experimental**, and as you can imagine from
the above description, this plugin is **potentially dangerous**.

When you use it, always try to isolate Node IDs. Remember that if a
jQluster node "Alice" knows another node's ID "Bob", Alice can always
manipulate Bob's DOM objects.


## Demo

TODO

## Getting Started

Before you start using jQluster in your Web site, you have to do the
following steps to prepare jQluster.


### Prepare the Server

Currently jQluster needs a server that accepts/delivers messages
from/to Web browsers.

A server implementation is available as a Perl module called
[jQluster::Server::WebSocket](https://metacpan.org/release/jQluster-Server-WebSocket). You
can install it by

    # wget http://cpanmin.us/ -O- | perl - jQluster::Server::WebSocket

or if you already have `cpanm` installed, you can use

    # cpanm jQluster::Server::WebSocket

Installation may take a few minutes because it may install some other<commit_msg>doc/_readme.md: write about the demo.<commit_after># jQluster - jQuery to remote browsers

**I'm still working on this project. Nothing is stable. Everything may be changed and be broken sometimes. It lacks documentation.**


jQluster is a jQuery plugin that manipulates DOM objects and events in
**other browsers**.

With jQluster, you can

- Get data from DOM objects in other browsers.
- Set data to DOM objects in other browsers.
- Listen to events at DOM objects in other browsers.
- Trigger events at DOM objects in other browsers.
- Perform the above operations via almost the same API as jQuery's.

Are you wondering why you need this, or why I created this? See the
"Motivation" section below.


## Caveat

**DO NOT USE THIS PLUGIN at Web pages with sensitive information**. 

This plugin is very much **experimental**, and as you can imagine from
the above description, this plugin is **potentially dangerous**.

When you use it, always try to isolate Node IDs. Remember that if a
jQluster node "Alice" knows another node's ID "Bob", Alice can always
manipulate Bob's DOM objects.


## Demo

- http://jqlusterdemo-debugito.rhcloud.com/

This is a demonstration of what can be done with jQluster.

The demo is a **multi-browser YouTube player** application.  In this
demo, the top page serves as a YouTube player screen while another
page serves as a controller of the player.

The "player" and "control" pages cooperate with each other using
jQluster. You can use different browsers or even **different
machines** (like a PC and a tablet) to open the two pages.


## Getting Started

Before you start using jQluster in your Web site, you have to do the
following steps to prepare jQluster.


### Prepare the Server

Currently jQluster needs a server that accepts/delivers messages
from/to Web browsers.

A server implementation is available as a Perl module called
[jQluster::Server::WebSocket](https://metacpan.org/release/jQluster-Server-WebSocket). You
can install it by

    # wget http://cpanmin.us/ -O- | perl - jQluster::Server::WebSocket

or if you already have `cpanm` installed, you can use

    # cpanm jQluster::Server::WebSocket

Installation may take a few minutes because it may install some other
{'fraction_non_alphanumeric': 0.06651492159838139, 'fraction_numerical': 0.0, 'mean_word_length': 4.15645371577575, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '566809', 'n_tokens_mistral': 1133, 'n_tokens_neox': 1068, 'n_words': 571}