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