lively.lang develop
grasp help
X

Menu
/home/lively/expt/lively-lang/tests/collection-benchmark.html
X

Menu
/home/lively/expt/canvas/demos/simple.html
X

Menu
tab size 2
mocha
X

Menu
browserify
X

Menu
grasp
X

Menu
Message Protocol (lively-json)
message = {
    // REQUIRED selector for service lookup. By convention action gets
    // postfixed with "Result" for response messages
    action: STRING,
    // REQUIRED target of the message
    target: UUID,
    // OPTIONAL arguments
    data: OBJECT,
    // OPTIONAL identifier of the message
    messageId: UUID,
    // OPTIONAL sender of the message
    sender: UUID,
    // OPTIONAL identifier of a message that this message answers
    inResponseTo: UUID,
    // OPTIONAL if message is an answer. Can be interpreted by the receiver as
    // a streaming response. Lively participants (tracker and clients) will
    // trigger data bindings and fire callbacks for a message for every streaming
    // response
    expectMoreResponses: BOOL,
    // EXPERIMENTAL UUIDs of trackers/sessions handlers that forwarded this
    // message
    route: ARRAY
}
X
the essential part
Services
// this is server code:
util._extend(require("./LivelyServices").services, {
    serverSayHello: function(sessionServerconnectionmsg) {
        connection.send({
            action: msg.action + 'Result',
            inResponseTo: msg.messageId,
            data: 'Hello!'});
    }
});
X
■ New server service:
// this is client code
var sess = lively.net.SessionTracker.getSession();
sess.sendTo(sess.trackerId, 'serverSayHello', {}, show);
X
■ New Lively world service:
lively.net.SessionTracker.registerActions({
    foobar: function(msgsession) {
        session.answer(msg, 'Howdy!');
    }
})
X
Lively2Lively Client Interface
// if not disabled a session gets established on world load
session = lively.net.SessionTracker.getSession();
// all the sessions in LivelyWeb that we know of
session.getUserInfo(inspect);
// loopback: send a message to myself
session.sendTo(session.sessionId, 'askFor', {bar: 23}, inspect);
// what services are provided by this session?
session.sendTo(session.sessionId, 'reportServices', null, inspect);
// what services are provided by my tracker?
session.sendTo(session.trackerId, 'reportServices', {}, inspect);
// how to implement a new message
// 1) messageNotUnderstood
session.sendTo(session.sessionId, 'foobar', {}, show);
// 2) Implement service
lively.net.SessionTracker.registerActions({
    foobar: function(msgsession) {
        session.answer(msg, 'Howdy!');
    }
})
// 3) message responds successfully
session.sendTo(session.sessionId, 'foobar', {}, show);
X
AST multi transform with grasp -- export
X

Menu
/home/lively/expt/lively-lang//TODO.md
X

Menu
expect.js
X

Menu
$expect
X

Menu
depth: 1
reset
var sess = lively.net.SessionTracker.getSession()
lively.module("Global.lively.net.tools.Functions").withSessionsDo(sess, function(err, sessions) {
  show(sessions.length)
}, true)
X
show vars
JavaScript Workspace
X

Menu
ServerWorkspace -- http://lively-web.org/nodejs/NodeJSEvalServer/
X

Menu
[exited 0,pid 1386] /usr/bin/env bash -c npm test
X

Menu
[exited 0,pid 2334] /usr/bin/env bash -c node_modules/mocha/bin/mocha tests/*-test.js
X

Menu
http://lively-web.org:9003/tests/run-tests.html
X

Menu
[exited 0,pid 1343] /usr/bin/env bash -c node_modules/mocha/bin/mocha --ui bdd -R min tests/*-test.js
X

Menu
AST Editor
X

Menu
Workspace
X

Menu
JavaScript Workspace
X

Menu
missing
X

Menu
load gihub css styling
X

Menu
/home/lively/expt/lively-lang/string.js
X

Menu
iframe setup
X

Menu
compare jsext
X

Menu
depth: 1
reset
var baseURL = "http://lively-web.org:9003/"
var urls = ['base.js','collection.js','function.js','string.js','number.js','date.js','object.js','messenger.js','worker.js'].map(function(ea) { return baseURL + ea; })
// var urls = ["collection.js"].map(function(ea) { return baseURL + ea; })
urls.forEach(function(ea) { JSLoader.forcedReload(ea); });
Object.keys(jsext).forEach(function(ea) { Global[ea] = jsext[ea]; });
jsext
JSLoader.forcedReload(baseURL + 'messenger.js?123')
JSLoader.forcedReload(baseURL + 'worker.js?123')
jsext.worker.fork({whenDone: function(errresult) { show(err || result)}}, function() {
  console.log("test???!!!");
  self.postMessage({type: "runResponse", result: 34});
})
var messenger = jsext.message.makeMessenger({
  send: function(msgwhenSend) {},
  receive: function(msg) {},
  listen: function(thenDo) {},
  close: function(thenDo) {},
  isOnline: function() {}
X
show vars
JavaScript Workspace
X

Menu
/home/lively/expt/lively-lang/tests/messenger-test.js
X

Menu
MarkdownText
X

Menu
JavaScript Workspace
X

Menu
jsext interface
X

Menu
Missing comments
X

Menu
Change project path
/home/lively/expt/lively-lang/
Ensure project server
Run tests Web
Run tests phantom.js Web
Run tests node.js
Tests
Code
Open project directory
show missing documentation
generate documentation files
show documentation preview
Generate
Documentation
Server
https://github.com/LivelyKernel/lively.lang
BaseDirectoryChooser
X

Menu
default Lively directory
/home/lively/expt/canvas
/home/lively/expt/flowly
/home/lively/expt/grasp
/home/lively/expt/lively-lang
+
-
JavaScript Workspace
X

Menu
[exited 8,pid 2063] /usr/bin/env bash -c node_modules/http-server/bin/http-server . --cors -p 9003
X

Menu