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