瀏覽代碼

Avoid loosing messages when the server is restarted

dev_h
Ophir LOJKINE 7 年之前
父節點
當前提交
b0f339d564
共有 2 個文件被更改,包括 14 次插入10 次删除
  1. 1
    0
      server/boardData.js
  2. 13
    10
      server/sockets.js

+ 1
- 0
server/boardData.js 查看文件

@@ -226,6 +226,7 @@ BoardData.prototype.load = function (file) {
226 226
 			if (err) throw err;
227 227
 			that.board = JSON.parse(data);
228 228
 			for (id in that.board) that.validate(that.board[id]);
229
+			console.log(that.name + " loaded from file.");
229 230
 		} catch (e) {
230 231
 			console.error("Unable to read history from " + file + ". The following error occured: " + e);
231 232
 			console.log("Creating an empty board.");

+ 13
- 10
server/sockets.js 查看文件

@@ -27,19 +27,23 @@ function startIO(app) {
27 27
 	return io;
28 28
 }
29 29
 
30
+function getBoard(name) {
31
+	var board = boards[name];
32
+	if (!board) {
33
+		boards[name] = board = {
34
+			"data": new BoardData(name)
35
+		};
36
+	}
37
+	return board;
38
+}
39
+
30 40
 function socketConnection(socket) {
31 41
 	socket.on("getboard", noFail(function onGetBoard(name) {
32 42
 
33 43
 		// Default to the public board
34 44
 		if (!name) name = "anonymous";
35 45
 
36
-		if (!boards[name]) {
37
-			boards[name] = {
38
-				"data": new BoardData(name)
39
-			};
40
-		}
41
-
42
-		var board_data = boards[name].data;
46
+		var board_data = getBoard(name).data;
43 47
 
44 48
 		// Join the board
45 49
 		socket.join(name);
@@ -91,9 +95,8 @@ function socketConnection(socket) {
91 95
 }
92 96
 
93 97
 function saveHistory(boardName, message) {
94
-	if (!(boardName in boards)) throw new Error("Missing board cannot be saved: ", boardName);
95 98
 	var id = message.id;
96
-	var boardData = boards[boardName].data;
99
+	var boardData = getBoard(boardName).data;
97 100
 	switch (message.type) {
98 101
 		case "delete":
99 102
 			if (id) boardData.delete(id);
@@ -121,7 +124,7 @@ function generateUID(prefix, suffix) {
121 124
 
122 125
 if (exports) {
123 126
 	exports.start = function (app) {
124
-		boards["anonymous"].data.on("ready", function () {
127
+		getBoard("anonymous").data.on("ready", function () {
125 128
 			startIO(app);
126 129
 		});
127 130
 	};

Loading…
取消
儲存