Santhosh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/111984

Change subject: POC: Socket.io based data model sync
......................................................................

POC: Socket.io based data model sync

Change-Id: I11384c45dbbf0de62ff9a4c816ef88d50e427240
---
M server/ContentTranslationService.js
M server/model/dataModelManager.js
M server/package.json
M server/public/index.html
M server/server.js
5 files changed, 37 insertions(+), 10 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ContentTranslation 
refs/changes/84/111984/1

diff --git a/server/ContentTranslationService.js 
b/server/ContentTranslationService.js
index 302080f..995da11 100644
--- a/server/ContentTranslationService.js
+++ b/server/ContentTranslationService.js
@@ -38,9 +38,17 @@
 /* -------------------- web app access points below --------------------- */
 
 var app = express();
+var context = {};
 
 app.translator = new CXMTInterface( config );
-app.use( express.urlencoded() );
+var server = require( 'http' ).createServer( app );
+context.io = require( 'socket.io' ).listen( server );
+app.use(express.bodyParser());
+
+// socket.io connection establishment
+context.io.sockets.on('connection', function (client) {
+       context.socket = client;
+} );
 
 // robots.txt: no indexing.
 app.get( /^\/robots.txt$/, function ( req, res ) {
@@ -61,20 +69,21 @@
 } );
 
 app.post( /^\/$/, function ( req, res ) {
-       var context = {
-                       sourceLanguage: req.body.sourceLanguage,
-                       targetLanguage: req.body.targetLanguage,
-                       sourceText: req.body.sourceText
-               },
-               dataModelManager= new CXDatamodelManager( context, config );
+       var dataModelManager;
+       context.sourceLanguage = req.body.sourceLanguage;
+       context.targetLanguage = req.body.targetLanguage;
+       context.sourceText = req.body.sourceText;
+       dataModelManager = new CXDatamodelManager( context, config );
        res.setHeader( 'Content-Type', 'application/json; charset=UTF-8' );
        res.end( JSON.stringify( dataModelManager.getDataModel() ) );
 } );
+
 
 // Everything else goes through this.
 app.use(express.static(__dirname + '/public'));
 
 console.log( ' - ' + instanceName + ' ready' );
+server.listen(config.port);
 
 module.exports = app;
 
diff --git a/server/model/dataModelManager.js b/server/model/dataModelManager.js
index 184d155..ba6e4b2 100644
--- a/server/model/dataModelManager.js
+++ b/server/model/dataModelManager.js
@@ -15,9 +15,11 @@
 }
 
 CXDatamodelManager.prototype.init = function() {
-       var segmenter = new Segmenter( this.context.sourceText, this.config );
+       var dataModelManager = this, timer,
+               segmenter = new Segmenter( this.context.sourceText, this.config 
);
 
        this.dataModel = {
+               version: 0,
                'sourceLang': this.context.sourceLanguage,
                'targetLang': this.context.targetLanguage,
                'sourceLocation' : 'Hydrogen',
@@ -29,7 +31,15 @@
                'links': segmenter.getLinksDictionary()
                // bunch of other stuff that is less relevant in a data 
structure overview
        };
+               timer = setInterval( function () {
+                       dataModelManager.refresh();
+               }, 5000 );
+};
 
+CXDatamodelManager.prototype.refresh = function () {
+       var dataModelManager = this;
+       this.dataModel.version += 1;
+       this.context.socket.emit( 'cx.data.update', dataModelManager.dataModel 
);
 };
 
 CXDatamodelManager.prototype.getDataModel = function() {
diff --git a/server/package.json b/server/package.json
index 0bf35f1..9b50338 100644
--- a/server/package.json
+++ b/server/package.json
@@ -4,7 +4,8 @@
        "version": "0.1.0",
        "dependencies": {
                "express": "3.x",
-               "jquery": "~1.8"
+               "jquery": "~1.8",
+               "socket.io": "0.9.x"
        },
        "devDependencies": {
                "colors": "~0.6.2",
diff --git a/server/public/index.html b/server/public/index.html
index 284f487..22b5c5a 100644
--- a/server/public/index.html
+++ b/server/public/index.html
@@ -1,6 +1,7 @@
 <html>
 <head>
        <script src='//code.jquery.com/jquery-1.10.2.min.js'></script>
+       <script src="/socket.io/socket.io.js"></script>
        <title>Content Translation Server</title>
        <meta content="">
        <style>
@@ -101,6 +102,12 @@
                                }
                        }
                } );
+
+               var socket = io.connect('/');
+                       socket.on( 'cx.data.update', function ( data ) {
+                               cxModel = data;
+                               $( '.status' ).text( 'Recieved data update. 
Version: ' + cxModel.version  );
+               });
        } );
        </script>
 </body>
diff --git a/server/server.js b/server/server.js
index aec306a..7765939 100644
--- a/server/server.js
+++ b/server/server.js
@@ -60,5 +60,5 @@
        var app = require( './ContentTranslationService.js' );
        // when running on appfog.com the listen port for the app
        // is passed in an environment variable.  Most users can ignore this!
-       app.listen( process.env.VCAP_APP_PORT || config.port );
+//     app.listen( process.env.VCAP_APP_PORT || config.port );
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/111984
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I11384c45dbbf0de62ff9a4c816ef88d50e427240
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ContentTranslation
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to