Poll.js 14 KB

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