<commit_before># Knockout Live Plugin

## Installation:
Clone the repository

    npm install
    node server.js

Visit index.html

## Files:
* js/knockout.live.plugin.js on the client
* js/main.js has the example for the chat application
* server.js running on node server

## Dependencies:
* Knockout 3.3.0+
* Socket.io v1.3.7 client/server
* Node.js and socket.io on the server side

## Notes
* The chat example run on port 4000, change js/main.js and server.js if required
* This example does not use node, you need a web server running on 80 like nginx or apache

## What do you need for your application to go "live"?:
* Set .live() on all ko.observable() and ko.observableArray() you want to synchronize remotely(see the chat example)
* Run ko.utils.socketConnect(address,port) before ko.applyBindings()

## Options for live():
* id: "my_id" sets a custom ID for sync purposes. This is useful if you are syncing between different apps.
* readonly: true blocks all direct changes to the live observable. It will update only by socket messages from the server.
<commit_msg>readme update<commit_after># Knockout Live Plugin

## Installation:
Clone the repository

    npm install
    node server.js

Visit /index.html to see the example chat application.

## Files:
* js/knockout.live.plugin.js on the client
* js/main.js has the example for the chat application
* server.js running on node server

## Dependencies:
* Knockout 3.3.0+
* Socket.io v1.3.7 client/server
* Node.js and socket.io on the server side

## Notes
* The chat example run on port 4000, change js/main.js and server.js if required
* This example does not use node, you need a web server running on 80 like nginx or apache

## What do you need for your application to go "live"?:
* Set .live() on all ko.observable() and ko.observableArray() you want to synchronize remotely(see the chat example)
* Run ko.utils.socketConnect(address,port) before ko.applyBindings()

## Options for live():
* id: "my_id" sets a custom ID for sync purposes. This is useful if you are syncing between different apps.
* readonly: true blocks all direct changes to the live observable. It will update only by socket messages from the server.

{'fraction_non_alphanumeric': 0.08113035551504102, 'fraction_numerical': 0.010938924339106655, 'mean_word_length': 4.057603686635945, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, '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': '2667003', 'n_tokens_mistral': 659, 'n_tokens_neox': 622, 'n_words': 303}