root 1 éve
szülő
commit
c985597a7a
2 módosított fájl, 23 hozzáadás és 7 törlés
  1. 3 4
      js/Office/Poll.js
  2. 20 3
      node/message.js

+ 3 - 4
js/Office/Poll.js

@@ -39,10 +39,10 @@ U.MD.O.P.polling = function (params) {
         var text = "";
         var xhr = new XMLHttpRequest();
         var data = "";
-        var time = null;
+        //var time = null;
         //
         var fun = function () {
-            clearTimeout(time)
+            //clearTimeout(time)
             text = xhr.responseText;
             var istrue = true;
             while (start < text.length && istrue) {
@@ -60,7 +60,7 @@ U.MD.O.P.polling = function (params) {
                 }
                 else {
                     istrue = false;
-                    time = setTimeout(fun, 500);//
+                    //time = setTimeout(fun, 500);//
                 }
             }
         };
@@ -68,7 +68,6 @@ U.MD.O.P.polling = function (params) {
         xhr.onreadystatechange = function () {
             //获取数据
             if (xhr.readyState == 3 && xhr.status == 200) {
-
                 fun();
             }
             //结束重连

+ 20 - 3
node/message.js

@@ -646,9 +646,11 @@ us.polling = function (requset, response, userid, pageid, type) {
     // });
     //判断轮询的用户是否在连接池中
     if (us.connect[userid]) {
-        var _userarray = us.connect[userid], //用户连接池,获取制定用户连接的数量,
+        var _data,
+            _userarray = us.connect[userid], //用户连接池,获取制定用户连接的数量,
             _messagearray = us.offLineMessage[pageid] //用户离线信息
             ;
+        const chunkSize = 100;
         //获取当前连接的用户,如果获取成功那么直接修改用户的连接
         if (_userarray[pageid]) {
             //防止重复多连
@@ -660,7 +662,12 @@ us.polling = function (requset, response, userid, pageid, type) {
             }
             _userarray[pageid].response = response;
             if (_messagearray && _messagearray.message.length > 0) {
-                response.write(JSON.stringify(_messagearray.message) + "\r\n");
+                _data = JSON.stringify(_messagearray.message);
+                for (let i = 0; i < _data.length; i += chunkSize) {
+                    const chunk = _data.slice(i, i + chunkSize);
+                    response.write(chunk);
+                }
+                response.write("\r\n");
                 _messagearray.message = [];
             }
             else {
@@ -1569,12 +1576,14 @@ us.senduser = function (userid, messageinfo) {
 **/
 us.broadcast = function (messageinfo, pageid, type) {
     var i, j, o, //循环变量
+        _data,
         _messageinfo, //消息信息
         _users, //用户ID集合
         _pageids, //用户页面唯一识别集合
         _recievedpageid, //接收用户的页面唯一识别ID
         _issend, // 是否发送
         _userconnect = us.connect; //用户连接池
+    const chunkSize = 100;
     for (i in messageinfo) {
         _messageinfo = messageinfo[i]; //记录消息消息b
         _users = us[type][i] ? us[type][i].user : {}; //记录用户集合
@@ -1586,11 +1595,19 @@ us.broadcast = function (messageinfo, pageid, type) {
                     try {
                         if (_userconnect[j] && _userconnect[j][_recievedpageid]) {
                             console.log(_recievedpageid);
-                            _issend = _userconnect[j][_recievedpageid].response.write(JSON.stringify(_messageinfo) + "\r\n"); //发送消息
+                            _data = JSON.stringify(_messageinfo);
+                            _issend = _userconnect[j][_recievedpageid].response.write(""); //发送消息
                             //用户在轮询切换的时候的中间,会产生数据无法接受,这里是存储数据
                             if (!_issend) {
                                 us.offLineMessage[_recievedpageid].message.push(_messageinfo); //将消息加入用户离线消息中
                             }
+                            else {
+                                for (let i = 0; i < _data.length; i += chunkSize) {
+                                    const chunk = _data.slice(i, i + chunkSize);
+                                    _userconnect[j][_recievedpageid].response.write(chunk);
+                                }
+                                _userconnect[j][_recievedpageid].response.write("\r\n");
+                            }
                         }
                     }
                     catch (e) {