A presentation of ROLE technologies at the Apache Rave Hackathon in Utrecht, Netherlands on Jun 13, 2012
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Currently happening: significant shift in education From passive lectures to interactive (online) group work Online learning tools cherry-picked or handcrafted by educators & learners DIY motto “create, disassemble, repurpose“ applied to educational products Learners & educators create mash-up learning apps, lessons & processes
More collaboration, personalization, freedom, effectiveness ROLE: Inherent DIY support using widget-based Personal Learning
Message-based communication between widgets Two different forms
Single-user-single-browser: Integration of local widget instances to full applications Realized with HTML5 Web Messaging (other mechanisms realizable, too)
Multi-user-multi-browser: Remote user collaboration in real-time Realized with XMPP Publish-Subscribe
Message types Events: what happened upon sending message Intents: what should happen on receiving message (Use of semantic descriptions in message representations)
Context In general: XMPP Publish-Subscribe Channel ROLE Reference Implementation: ROLE Spaces
Connects the client to local interwidget communication. After successful call, the client is able to publish and receive intents. Received intents are passed to the callback function.
disconnect() Disconnects the client from interwidget communication.
publish(intent) Publishes a JSON-encoded intent.
Initialize ROLE IWC Client
var iwcClient = new iwc.Client(); iwcClient.connect(function(intent){
Google Android-like Intents component(*) (String) - the component name of a specific recipient widget
(explicit intent) or the empty string to indicate broadcasting (implicit intent) sender (String) - sender & sender widget. action (String) - the action to be performed by receivers (e.g. ACTION_UPDATE) data(*) (String) - data in form of a URI (e.g. http://myresource.org/microblogs/1) dataType(*) (String) - the data type in MIME notation (e.g. text/html) categories (Array) - categories of widgets to process the intent (e.g. ["editor"]) flags (Array) - flags controlling intent processing (e.g. ["PUBLISH GLOBAL"]) extras (JSON) - auxiliary data (e.g. {"examplekey":"examplevalue“})
XMPP over WebSocket Gateway (WXG) Based on "An XMPP Sub-protocol for WebSocket" (J. Moffit, E. Cestari) Jetty-based implementation (supporting RFC 6455) Source: https://github.com/hocken/wxg
Web Client Library Extension (strophe.js) (Semi-)transparent BOSH/XMPP over WS Refers to Strophe Issue 68: Source: https://github.com/Gordin/strophejs