Poll.js 14 KB

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