Poll.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. //轮训处理
  2. Namespace.register("U.MD.O.P");
  3. /*
  4. * 链接后台,并发送请求
  5. */
  6. U.MD.O.P.connect = function () {
  7. if (US.userInfo.userid) { //判断用户是否登录
  8. U.MD.O.P.polling(["login", JSON.stringify({ //发送登录请求
  9. pageId: US.pageId,
  10. userId: US.userInfo.userid,
  11. userName: US.userInfo.UserName,
  12. type: US.systemId
  13. })]);
  14. // U.A.Request(US.SCOKET, ["login", JSON.stringify({ //发送登录请求
  15. // pageId: US.pageId,
  16. // userId: US.userInfo.userid,
  17. // userName: US.userInfo.UserName,
  18. // type: US.systemId
  19. // })], U.MD.O.P.pollingAsyn); //回调进 U.MD.O.P.pollingAsyn 函数
  20. }
  21. };
  22. /*
  23. * 发送请求进入轮训
  24. */
  25. U.MD.O.P.polling = function (params) {
  26. params = params || ["polling", US.userInfo.userid, US.pageId, US.systemId]
  27. var start = 0;
  28. var time = null;
  29. var xhr = new XMLHttpRequest();
  30. var data = "";
  31. xhr.open("POST", US.SCOKET, true);
  32. xhr.onreadystatechange = function () {
  33. if (xhr.readyState == 3 && xhr.status == 200) {
  34. clearTimeout(time);
  35. var len = xhr.responseText.length;
  36. data += xhr.responseText.substring(start, len);
  37. start = len;
  38. time = setTimeout(function () {
  39. clearTimeout(time);
  40. try {
  41. U.MD.O.P.pollingAsyn({ value: JSON.parse(data) })
  42. }
  43. catch (e) {
  44. }
  45. data = "";
  46. }, 100);
  47. }
  48. };
  49. //超时重新连接
  50. xhr.onerror = function (err) {
  51. console.log(err);
  52. U.MD.O.P.polling();
  53. };
  54. try {
  55. //发送请求
  56. xhr.send(U.A.Request.toAjaxFormat(params));
  57. }
  58. catch (e) {
  59. U.MD.O.P.polling();
  60. }
  61. // U.A.Request(US.SCOKET, ["polling", US.userInfo.userid, US.pageId, US.systemId], U.MD.O.P.pollingAsyn);
  62. // //发送轮循 回调进 U.MD.O.P.pollingAsyn函数
  63. // }
  64. }
  65. /*
  66. * 处理从后台返回的数据
  67. *
  68. */
  69. U.MD.O.P.pollingAsyn = function (r) {
  70. r = r.value;
  71. if (r) { //r是否有值
  72. if (r[0] instanceof Array) {
  73. r = r[0];
  74. }
  75. // console.log('获取到的数据:', r)
  76. var _i, _message, _iframe, _contentWindow;
  77. for (_i = 0; _i < r.length; _i++) {
  78. _message = r[_i];
  79. switch (_message.type) {
  80. case 'us.word': //判断是否是word 的消息
  81. // _iframe = $('#UD_Word' + _message.messageInfo.docId + ' iframe')[0];
  82. _iframe = $('#doc iframe')[0];
  83. if (_iframe) {
  84. _contentWindow = _iframe.contentWindow;
  85. if (_message.messageInfo.type == "updateName") {
  86. $('#UD_Word' + _message.messageInfo.docId + ' .U_MD_O_H_head_navigation_Title')[0].value = _message.messageInfo.name;
  87. }
  88. else if (_message.messageInfo.type == "insertModifyRecord") {
  89. _contentWindow.U.MD.O.W.Panel.syncHistory(_message.sendId, _message.messageInfo.historyid);
  90. }
  91. else if (_message.messageInfo.type == "addUser") {
  92. _contentWindow.U.MD.O.W.Panel.syncAddUser(_message.messageInfo.userIds, _message.sendId);
  93. }
  94. else {// if ($('#UD_Word' + _message.messageInfo.docId).css('display') == 'block')
  95. switch (_message.messageInfo.type) {// 判断消息种类
  96. case 'update':
  97. _contentWindow.U.MD.O.W.E.updateEditorLine(_message.messageInfo);
  98. break;
  99. case 'add':
  100. _contentWindow.U.MD.O.W.E.addEditorLine(_message.messageInfo);
  101. break;
  102. case 'delete':
  103. _contentWindow.U.MD.O.W.E.deleteEditorLine(_message.messageInfo);
  104. break;
  105. }
  106. }
  107. }
  108. break;
  109. case 'us.nav':
  110. _iframe = $('#UD_Word' + _message.messageInfo.docId + ' iframe')[0];
  111. if (_message.messageInfo.type == "updateName") {
  112. $('#UD_Word' + _message.messageInfo.docId + ' .U_MD_O_H_head_navigation_Title')[0].value = _message.messageInfo.name;
  113. } else if (_message.messageInfo.type == "addUser") {
  114. _contentWindow.U.MD.O.W.Panel.syncAddUser(_message.messageInfo.userIds, _message.sendId);
  115. }
  116. else if ($('#UD_Word' + _message.messageInfo.docId).css('display') == 'block') {
  117. _contentWindow = _iframe.contentWindow;
  118. switch (_message.messageInfo.type) {// 判断消息种类
  119. case 'update':
  120. _contentWindow.U.MD.O.W.T.N.nowNavId == _message.messageInfo.navId && _contentWindow.U.MD.O.W.E.updateEditorLine(_message.messageInfo);
  121. break;
  122. case 'add':
  123. _contentWindow.U.MD.O.W.T.N.nowNavId == _message.messageInfo.navId && _contentWindow.U.MD.O.W.E.addEditorLine(_message.messageInfo);
  124. break;
  125. case 'delete':
  126. _contentWindow.U.MD.O.W.T.N.nowNavId == _message.messageInfo.navId && _contentWindow.U.MD.O.W.E.deleteEditorLine(_message.messageInfo);
  127. break;
  128. case 'addNav':
  129. _contentWindow.U.MD.O.W.T.N.Poll.addNav(_message.messageInfo);
  130. break;
  131. case 'updateNav':
  132. _contentWindow.U.MD.O.W.T.N.Poll.updateNav(_message.messageInfo);
  133. break;
  134. case 'deleteNav':
  135. _contentWindow.U.MD.O.W.T.N.Poll.deleteNav(_message.messageInfo);
  136. break;
  137. case 'updateLogo':
  138. _contentWindow.U.MD.O.W.T.N.Poll.updateLogo(_message.messageInfo);
  139. break;
  140. }
  141. }
  142. break;
  143. case 'us.excel': //判断是否是word 的消息
  144. _iframe = $('#UD_Excel' + _message.messageInfo.docId + ' iframe')[0];
  145. if (_iframe) {
  146. if (_message.messageInfo.type == "updateName") {
  147. $('#UD_Excel' + _message.messageInfo.docId + ' .U_MD_O_H_head_navigation_Title')[0].value = _message.messageInfo.name;
  148. }
  149. else if (_message.messageInfo.type == "addUser") {
  150. }
  151. else {
  152. _contentWindow = _iframe.contentWindow;
  153. switch (_message.messageInfo.type) {// 判断消息种类
  154. case 'blur':
  155. _contentWindow.U.MD.O.E.Receiver.Blur(_message.messageInfo);
  156. break;
  157. case 'setBorder':
  158. _contentWindow.U.MD.O.E.Receiver.setBorder(_message.messageInfo);
  159. break;
  160. case "addLine":
  161. _contentWindow.U.MD.O.E.Receiver.addLine(_message.messageInfo);
  162. //添加行
  163. break;
  164. case "delLine":
  165. _contentWindow.U.MD.O.E.Receiver.delLine(_message.messageInfo);
  166. //刪除行
  167. break;
  168. case "addCol":
  169. _contentWindow.U.MD.O.E.Receiver.addCol(_message.messageInfo);
  170. //添加列
  171. break;
  172. case "delCol":
  173. _contentWindow.U.MD.O.E.Receiver.delCol(_message.messageInfo);
  174. //刪除列
  175. break;
  176. case "merge":
  177. _contentWindow.U.MD.O.E.Receiver.merge(_message.messageInfo);
  178. //合并单元格
  179. break;
  180. case "splitCells":
  181. _contentWindow.U.MD.O.E.Receiver.splitCells(_message.messageInfo);
  182. //拆分单元格
  183. break;
  184. case "rowExpanding":
  185. _contentWindow.U.MD.O.E.Receiver.rowExpanding(_message.messageInfo);
  186. //行板拉伸
  187. break;
  188. case "colExpanding":
  189. _contentWindow.U.MD.O.E.Receiver.colExpanding(_message.messageInfo);
  190. //列板拉伸
  191. break;
  192. case "addTask":
  193. _contentWindow.U.MD.O.E.Receiver.addTask(_message.messageInfo);
  194. break;
  195. case "deleteTask":
  196. _contentWindow.U.MD.O.E.Receiver.deleteTask(_message.messageInfo);
  197. break;
  198. case "reNameTask":
  199. _contentWindow.U.MD.O.E.Receiver.reNameTask(_message.messageInfo);
  200. break;
  201. case "img":
  202. _contentWindow.U.MD.O.E.Receiver.img(_message.messageInfo);
  203. //插入图片
  204. break;
  205. case "imgChange": //图片拉伸及拖拽
  206. _contentWindow.U.MD.O.E.Receiver.imgChange(_message.messageInfo);
  207. break;
  208. case "excelAddHref": //插入链接
  209. _contentWindow.U.MD.O.E.Receiver.excelAddHref(_message.messageInfo);
  210. break;
  211. case "clearAContent": //删除链接
  212. _contentWindow.U.MD.O.E.Receiver.clearAContent(_message.messageInfo);
  213. break;
  214. }
  215. }
  216. }
  217. break;
  218. case 'us.mindNetwork':
  219. // _iframe = $('#mindNetwork' + _message.messageInfo.docId)[0];
  220. _iframe = $('#mindNetwork iframe')[0];
  221. if (_iframe) {
  222. _contentWindow = _iframe.contentWindow;
  223. // if (_message.messageInfo.type == "addUser") {
  224. // _contentWindow.postMessage({ cid: cid, type: "mindNetwork_addUser" }, "*")
  225. // }
  226. // else
  227. // if ($('#mindNetwork' + _message.messageInfo.docId).css('display') == 'block') {
  228. switch (_message.messageInfo.type) {// 判断消息种类
  229. case 'update':
  230. _contentWindow.postMessage({ info: _message.messageInfo, type: "mindNetwork_update" }, "*")
  231. break;
  232. case 'delete':
  233. _contentWindow.postMessage({ info: _message.messageInfo, type: "mindNetwork_delete" }, "*")
  234. break;
  235. case 'move':
  236. _contentWindow.postMessage({ info: _message.messageInfo, type: "mindNetwork_move" }, "*")
  237. break;
  238. }
  239. // }
  240. }
  241. break;
  242. case 'us.realTimeClass':
  243. _iframe = $('#studentClassRoom iframe')[0];
  244. if (_iframe) {
  245. _contentWindow = _iframe.contentWindow;
  246. switch (_message.messageInfo.type) {// 判断消息种类
  247. case 'update'://修改页码
  248. _contentWindow.postMessage({ info: _message.messageInfo, type: "realTimeClass_update" }, "*")
  249. break;
  250. }
  251. // }
  252. }
  253. break;
  254. case 'us.cscl':
  255. _iframe = $('#futureClass iframe')[0];
  256. if (_iframe) {
  257. _contentWindow = _iframe.contentWindow;
  258. _contentWindow.postMessage({ info: _message.messageInfo, type: _message.messageInfo.type }, "*");
  259. }
  260. break;
  261. }
  262. }
  263. }
  264. U.MD.O.P.polling(); //进入轮循
  265. }