0.2.2 • Published 10 years ago
linda-socket.io v0.2.2
Deprecated
move to linda
Linda Socket.IO
Coordinatioin Launguage "Linda" implementation for Node.js and Socket.IO
Install
% npm install linda-socket.io
% npm install socket.io socket.io-client
Requirements
- Node.js
- Socket.IO
Linda
Linda is a coordination launguage for parallel programming.
TupleSpace
Shared memory on Node.js server.
Tuple Operations
- write( tuple , options )
- put a Tuple into the TupleSpace
- options = {expire : 300} # => expire after 300 sec
- take( tuple, callback(err, tuple) )
- get a matched Tuple from the TupleSpace and delete
- read( tuple, callback(err, tuple) )
- get a matched Tuple from the TupleSpace
- watch( tuple, callback(err, tuple) )
- overwatch written Tuples in the TupleSpace
Samples
- https://github.com/node-linda/linda-socket.io/tree/master/samples
- https://github.com/node-linda/linda-job-queue-sample
Install Dependencies
% git clone https://github.com/node-linda/linda-socket.io.git
% cd linda-socket.io
% npm install
% npm install -g grunt-cli coffee-script
Chat
% coffee samples/chat/server.coffee 3000
Job-Queue
% coffee samples/job-queue/server.coffee 3000
print Tuple read/write/take/watch/cancel logs
% DEBUG=linda* coffee samples/chat/server.coffee 3000
% DEBUG=linda* coffee samples/job-queue/server.coffee 3000
Usage
Setup
Server Side (node.js)
var http = require('http');
var app_handler = function(req, res){
// your web app code
};
var app = http.createServer(app_handler);
var io = require('socket.io').listen(app);
var linda = require('linda-socket.io').Linda.listen({io: io, server: app});
app.listen(3000);
console.log("server start - http://localhost:3000");
Client Side (web browser)
<script src="/socket.io/socket.io.js"></script>
<script src="/linda/linda-socket.io.js"></script>
var socket = io.connect(location.protocol+"//"+location.host);
var linda = new Linda().connect(socket);
Client Side (node.js)
var LindaClient = require('linda-socket.io').Client;
var socket = require('socket.io-client').connect('http://localhost:3000');
var linda = new LindaClient().connect(socket);
Job-Queue Sample
job client
// connect to tuplespace (shared memory)
var ts = linda.tuplespace("calc");
// request
$("#btn_request").click(function(){
ts.write({type: "request", query: "1-2+3*4"});
});
// wait result
socket.on('connect', function(){
// overwatch Tuple
ts.watch({type: 'result'}, function(err, tuple){
if(err) return;
console.log(tuple.data.result); // => "1-2+3*4 = 11"
});
});
job worker
// connect to tuplespace (shared memory)
var ts = linda.tuplespace("calc");
// calculate
var work = function(){
ts.take({type: 'request'}, function(err, tuple){
if(!err){
var result = eval(tuple.data.query); // => "1-2+3*4"
console.log(tuple.data.query+" = "+result); // => "1-2+3*4 = 11"
ts.write({type: 'result', result: result}); // return to 'client' side
}
work(); // recursive call
});
};
socket.on('connect', function(){ // Socket.IO's "connect" event
work();
});
see more samples
Test
% npm install
% npm install -g grunt-cli coffee-script
% grunt test
watch
% grunt
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
0.2.2
10 years ago
0.2.1
10 years ago
0.2.0
10 years ago
0.1.7
10 years ago
0.1.6
10 years ago
0.1.5
10 years ago
0.1.4
10 years ago
0.1.3
10 years ago
0.1.2
10 years ago
0.1.1
10 years ago
0.1.0
10 years ago
0.0.9
10 years ago
0.0.8
10 years ago
0.0.7
10 years ago
0.0.6
10 years ago
0.0.5
10 years ago
0.0.4
10 years ago
0.0.3
10 years ago
0.0.2
10 years ago