mirror of
https://github.com/wassname/HackFlowy.git
synced 2026-07-05 17:20:05 +08:00
Intermediate commit, NaiveRealTime, still need to change AddNode
This commit is contained in:
+20
-8
@@ -17,6 +17,8 @@ var getAndSendRevHistory = require("./revAlgorithm.js").getAndSendRevHistory;
|
||||
var MessageQueue =require("./MessageQueue.js");
|
||||
console.log("MessageQueue", MessageQueue);
|
||||
|
||||
var CURRENT_TIMESTAMP = Date.now();
|
||||
|
||||
module.exports = {
|
||||
|
||||
validateParArr: function(parId, parArr){
|
||||
@@ -121,21 +123,31 @@ function attachLogInListeners(socket){
|
||||
// });
|
||||
|
||||
|
||||
var syncValidation = function(data, timestampData, queueData, emitData){
|
||||
if(timestampData[1] != CURRENT_TIMESTAMP){
|
||||
socket.emit("OFF_SYNC");
|
||||
}
|
||||
else{
|
||||
CURRENT_TIMESTAMP = timestampData[0];
|
||||
socket.broadcast.emit(emitData[0], emitData[1]);
|
||||
MessageQueue.queueOrDo(action);
|
||||
}
|
||||
}
|
||||
//maybe emit sooner...
|
||||
//need to broadcast parentArray.
|
||||
socket.on("newNode", function(data){
|
||||
MessageQueue.queueOrDo(['newNode', data, socket])
|
||||
//timestampData=[CURRENT_TIMESTAMP, oldTime]
|
||||
socket.on("newNode", function(data, timestampData){
|
||||
syncValidation(data, timestampData, ['newNode', data, socket], ["dummy", 1234]);
|
||||
//(todo = set IDs on client (instead of negative Ids));
|
||||
});
|
||||
|
||||
|
||||
socket.on("removeNode", function(data){
|
||||
socket.broadcast.emit("removeNode", data);
|
||||
MessageQueue.queueOrDo(['removeNode', data, socket])
|
||||
socket.on("removeNode", function(data, timestampData){
|
||||
syncValidation(data, timestampData, ['removeNode', data, socket], ["removeNode", data]);
|
||||
});
|
||||
|
||||
socket.on("movedNode", function(data){
|
||||
socket.broadcast.emit("movedNode", [data[0], data[2]]);
|
||||
MessageQueue.queueOrDo(['movedNode', data, socket])
|
||||
socket.on("movedNode", function(data, timestampData){
|
||||
syncValidation(data, timestampData, ['movedNode', data, socket],[ "movedNode", [data[0],data[2]] ]);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -40,12 +40,12 @@ module.exports.addNode = addNode;
|
||||
// return rootID;
|
||||
// }
|
||||
|
||||
function findAndSocketSend(socket){
|
||||
function findAndSocketSend(socket, CURRENT_TIMESTAMP){
|
||||
var nodes = {'keeping': 'calm'}
|
||||
MyNode.find().populate('authorId','_id google.name' ).exec(function(err, nodes){
|
||||
if(!err){
|
||||
// require("underscore").each(nodes, function(node){console.log(node)});
|
||||
socket.emit('nodeData', nodes)
|
||||
socket.emit('nodeData', nodes, CURRENT_TIMESTAMP)
|
||||
return {'hell': 'yes'}
|
||||
}else{
|
||||
socket.emit('nodeData', "error!!!")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
var CURRENT_TIMESTAMP;
|
||||
var socket = null;
|
||||
|
||||
var AppRouter = Backbone.Router.extend({
|
||||
@@ -99,14 +99,19 @@ var that = this;
|
||||
|
||||
socket.emitWrapper = function(eventName, data){
|
||||
console.log(this);
|
||||
if(this.socket.connected){ this.emit(eventName, data); }
|
||||
if(this.socket.connected){
|
||||
var oldTime = CURRENT_TIMESTAMP;
|
||||
CURRENT_TIMESTAMP = Date.now();
|
||||
this.emit(eventName, data, [CURRENT_TIMESTAMP, oldTime]);
|
||||
}
|
||||
else{ //(alert + lock)
|
||||
alert("Internet connection down. Edits not synced. Refresh when back online.");
|
||||
}
|
||||
}
|
||||
|
||||
socket.on('nodeData', function(data){
|
||||
socket.on('nodeData', function(data, SERVER_TIMESTAMP){
|
||||
//alert("data");
|
||||
CURRENT_TIMESTAMP = SERVER_TIMESTAMP;
|
||||
console.log(data);
|
||||
nodesCollection = new NodesCollection(data);
|
||||
var id = nodesCollection.findWhere({text: "0root"}).get("_id");
|
||||
@@ -267,15 +272,20 @@ socket.on("revControl", function(data){
|
||||
//To be continued...
|
||||
});
|
||||
|
||||
socket.on("VALIDATE", function(data){
|
||||
var parId = data[0];
|
||||
var parArr = data[1];
|
||||
var thisParArr = nodesCollection.findWhere({_id: parId}).get("children");
|
||||
if(!_.isEqual(thisParArr, parArr)){
|
||||
alert("syncing error.Edits no longer synced. Please refresh browser");
|
||||
socket = null;
|
||||
}
|
||||
});
|
||||
socket.on("OFF_SYNC", function(){
|
||||
alert("syncing error.Edits no longer synced. Please refresh browser");
|
||||
socket = null;
|
||||
});
|
||||
|
||||
// socket.on("VALIDATE", function(data){
|
||||
// var parId = data[0];
|
||||
// var parArr = data[1];
|
||||
// var thisParArr = nodesCollection.findWhere({_id: parId}).get("children");
|
||||
// if(!_.isEqual(thisParArr, parArr)){
|
||||
// alert("syncing error.Edits no longer synced. Please refresh browser");
|
||||
// socket = null;
|
||||
// }
|
||||
// });
|
||||
|
||||
|
||||
socket.emit("nodeRequest");
|
||||
|
||||
Reference in New Issue
Block a user