WebIM.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. import websdk from "../sdk/Easemob-chat-4.0.4";
  2. import config from "./WebIMConfig";
  3. console.group = console.group || {};
  4. console.groupEnd = console.groupEnd || {};
  5. var window = {};
  6. let WebIM = window.WebIM = websdk;
  7. window.WebIM.config = config;
  8. //var DOMParser = window.DOMParser = xmldom.DOMParser;
  9. //let document = window.document = new DOMParser().parseFromString("<?xml version='1.0'?>\n", "text/xml");
  10. WebIM.isDebug = function (option) {
  11. if (option) {
  12. WebIM.config.isDebug = option.isDebug
  13. openDebug(WebIM.config.isDebug)
  14. }
  15. function openDebug(value) {
  16. function ts() {
  17. var d = new Date();
  18. var Hours = d.getHours(); // 获取当前小时数(0-23)
  19. var Minutes = d.getMinutes(); // 获取当前分钟数(0-59)
  20. var Seconds = d.getSeconds(); // 获取当前秒数(0-59)
  21. return (Hours < 10 ? "0" + Hours : Hours) + ":" + (Minutes < 10 ? "0" + Minutes : Minutes) + ":" + (Seconds < 10 ? "0" + Seconds : Seconds) + " ";
  22. }
  23. // if (value) {
  24. // Strophe.Strophe.Connection.prototype.rawOutput = function(data){
  25. // try{
  26. // console.group("%csend # " + ts(), "color: blue; font-size: large");
  27. // console.log("%c" + data, "color: blue");
  28. // console.groupEnd();
  29. // }
  30. // catch(e){
  31. // console.log(e);
  32. // }
  33. // };
  34. // }else{
  35. // Strophe.Strophe.Connection.prototype.rawOutput = function(){};
  36. // }
  37. }
  38. }
  39. /**
  40. * Set autoSignIn as true (autoSignInName and autoSignInPwd are configured below),
  41. * You can auto signed in each time when you refresh the page in dev model.
  42. */
  43. WebIM.config.autoSignIn = false;
  44. if (WebIM.config.autoSignIn) {
  45. WebIM.config.autoSignInName = "lwz2";
  46. WebIM.config.autoSignInPwd = "1";
  47. }
  48. // var stropheConn = new window.Strophe.Connection("ws://im-api.easemob.com/ws/", {
  49. // inactivity: 30,
  50. // maxRetries: 5,
  51. // pollingTime: 4500
  52. // });
  53. //
  54. // stropheConn.connect(
  55. // '$t$' + 'YWMtmbQEBKKIEeaGmMtXyg5n1wAAAVlkQvGO2WOJGlMCEJKM4VV9GCMnb_XLCXU',
  56. // function() {
  57. // console.log(arguments, 'ggogogo');
  58. // }, stropheConn.wait, stropheConn.hold);
  59. WebIM.parseEmoji = function (msg) {
  60. if (typeof WebIM.Emoji === "undefined" || typeof WebIM.Emoji.map === "undefined") {
  61. return msg;
  62. }
  63. var emoji = WebIM.Emoji,
  64. reg = null;
  65. var msgList = [];
  66. var objList = [];
  67. for (var face in emoji.map) {
  68. if (emoji.map.hasOwnProperty(face)) {
  69. while (msg.indexOf(face) > -1) {
  70. msg = msg.replace(face, "^" + emoji.map[face] + "^");
  71. }
  72. }
  73. }
  74. var ary = msg.split("^");
  75. var reg = /^e.*g$/;
  76. for (var i = 0; i < ary.length; i++) {
  77. if (ary[i] != "") {
  78. msgList.push(ary[i]);
  79. }
  80. }
  81. for (var i = 0; i < msgList.length; i++) {
  82. if (reg.test(msgList[i])) {
  83. var obj = {};
  84. obj.data = msgList[i];
  85. obj.type = "emoji";
  86. objList.push(obj);
  87. }
  88. else {
  89. var obj = {};
  90. obj.data = msgList[i];
  91. obj.type = "txt";
  92. objList.push(obj);
  93. }
  94. }
  95. return objList;
  96. };
  97. WebIM.time = function () {
  98. var date = new Date();
  99. var Hours = date.getHours();
  100. var Minutes = date.getMinutes();
  101. var Seconds = date.getSeconds();
  102. var time = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " "
  103. + (Hours < 10 ? "0" + Hours : Hours) + ":" + (Minutes < 10 ? "0" + Minutes : Minutes) + ":" + (Seconds < 10 ? "0" + Seconds : Seconds);
  104. return time;
  105. };
  106. WebIM.Emoji = {
  107. path: "../../../../../images/faces/",
  108. map: {
  109. "[):]": "ee_1.png",
  110. "[:D]": "ee_2.png",
  111. "[;)]": "ee_3.png",
  112. "[:-o]": "ee_4.png",
  113. "[:p]": "ee_5.png",
  114. "[(H)]": "ee_6.png",
  115. "[:@]": "ee_7.png",
  116. "[:s]": "ee_8.png",
  117. "[:$]": "ee_9.png",
  118. "[:(]": "ee_10.png",
  119. "[:'(]": "ee_11.png",
  120. "[<o)]": "ee_12.png",
  121. "[(a)]": "ee_13.png",
  122. "[8o|]": "ee_14.png",
  123. "[8-|]": "ee_15.png",
  124. "[+o(]": "ee_16.png",
  125. "[|-)]": "ee_17.png",
  126. "[:|]": "ee_18.png",
  127. "[*-)]": "ee_19.png",
  128. "[:-#]": "ee_20.png",
  129. "[^o)]": "ee_21.png",
  130. "[:-*]": "ee_22.png",
  131. "[8-)]": "ee_23.png",
  132. "[del]": "btn_del.png",
  133. "[(|)]": "ee_24.png",
  134. "[(u)]": "ee_25.png",
  135. "[(S)]": "ee_26.png",
  136. "[(*)]": "ee_27.png",
  137. "[(#)]": "ee_28.png",
  138. "[(R)]": "ee_29.png",
  139. "[({)]": "ee_30.png",
  140. "[(})]": "ee_31.png",
  141. "[(k)]": "ee_32.png",
  142. "[(F)]": "ee_33.png",
  143. "[(W)]": "ee_34.png",
  144. "[(D)]": "ee_35.png"
  145. }
  146. };
  147. WebIM.EmojiObj = {
  148. // 相对 emoji.js 路径
  149. path: "../../../../../images/faces/",
  150. map1: {
  151. "[):]": "ee_1.png",
  152. "[:D]": "ee_2.png",
  153. "[;)]": "ee_3.png",
  154. "[:-o]": "ee_4.png",
  155. "[:p]": "ee_5.png",
  156. "[(H)]": "ee_6.png",
  157. "[:@]": "ee_7.png"
  158. },
  159. map2: {
  160. "[:s]": "ee_8.png",
  161. "[:$]": "ee_9.png",
  162. "[:(]": "ee_10.png",
  163. "[:'(]": "ee_11.png",
  164. "[<o)]": "ee_12.png",
  165. "[(a)]": "ee_13.png",
  166. "[8o|]": "ee_14.png"
  167. },
  168. map3: {
  169. "[8-|]": "ee_15.png",
  170. "[+o(]": "ee_16.png",
  171. "[|-)]": "ee_17.png",
  172. "[:|]": "ee_18.png",
  173. "[*-)]": "ee_19.png",
  174. "[:-#]": "ee_20.png",
  175. "[del]": "del.png"
  176. },
  177. map4: {
  178. "[^o)]": "ee_21.png",
  179. "[:-*]": "ee_22.png",
  180. "[8-)]": "ee_23.png",
  181. "[(|)]": "ee_24.png",
  182. "[(u)]": "ee_25.png",
  183. "[(S)]": "ee_26.png",
  184. "[(*)]": "ee_27.png"
  185. },
  186. map5: {
  187. "[(#)]": "ee_28.png",
  188. "[(R)]": "ee_29.png",
  189. "[({)]": "ee_30.png",
  190. "[(})]": "ee_31.png",
  191. "[(k)]": "ee_32.png",
  192. "[(F)]": "ee_33.png",
  193. "[(W)]": "ee_34.png",
  194. "[(D)]": "ee_35.png"
  195. },
  196. map6: {
  197. "[del]": "del.png"
  198. }
  199. };
  200. // wx.connectSocket({url: WebIM.config.xmppURL, method: "GET"})
  201. WebIM.conn = new WebIM.connection({
  202. appKey: WebIM.config.appkey,
  203. isMultiLoginSessions: WebIM.config.isMultiLoginSessions,
  204. https: true, //typeof WebIM.config.https === "boolean" ? WebIM.config.https : location.protocol === "https:",
  205. url: WebIM.config.socketServer,
  206. apiUrl: WebIM.config.apiURL,
  207. isAutoLogin: false,
  208. heartBeatWait: 30000, //WebIM.config.heartBeatWait,
  209. autoReconnectNumMax: WebIM.config.autoReconnectNumMax,
  210. autoReconnectInterval: WebIM.config.autoReconnectInterval,
  211. isDebug: WebIM.config.isDebug,
  212. deviceId: WebIM.config.deviceId
  213. });
  214. // async response
  215. // WebIM.conn.listen({
  216. // onOpened: () => dispatch({type: Types.ON_OPEND})
  217. // })
  218. Math.uuid = function (len, radix) {
  219. var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
  220. var chars = CHARS, uuid = [], i;
  221. radix = radix || chars.length;
  222. if (len) {
  223. // Compact form
  224. for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
  225. } else {
  226. // rfc4122, version 4 form
  227. var r;
  228. // rfc4122 requires these characters
  229. uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
  230. uuid[14] = '4';
  231. // Fill in random data. At i==19 set the high bits of clock sequence
  232. // as
  233. // per rfc4122, sec. 4.1.5
  234. for (i = 0; i < 36; i++) {
  235. if (!uuid[i]) {
  236. r = 0 | Math.random() * 16;
  237. uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
  238. }
  239. }
  240. }
  241. return uuid.join('');
  242. };
  243. // export default WebIM;
  244. module.exports = {
  245. "default": WebIM
  246. };