aNetLib.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. // var qqgamesdk = require('qqgamesdk');
  2. var qqgamesdk = require('qqgame-sdk-0.3.6.min');
  3. window.qqNetwork = {};
  4. // load sdk
  5. qqNetwork.qqSdkInitFlag = false;
  6. if (!cc.sys.isNative) {
  7. }
  8. qqNetwork.room2Game = {
  9. channelCreated:"channelCreated", // 通道创建,大厅到游戏
  10. gameData:"gameData", // 数据传输,游戏到大厅或者大厅到游戏
  11. frameData:"frameData",
  12. gameStart:"gameStart", // 游戏开始,大厅到游戏
  13. network:"network",
  14. leave:"leave",
  15. voice:"voice",
  16. gameReset:"gameReset" // 游戏重置,大厅到游戏
  17. };
  18. qqNetwork.game2Room = {
  19. gameInit:"gameInit", // 游戏初始化,游戏到大厅
  20. gameData:"gameData", // 游戏数据传输,游戏到大厅或者大厅到游戏
  21. gameReady:"gameReady", // 游戏ready,游戏到大厅
  22. gameResult:"gameResult", //结算信息,游戏到大厅
  23. frameData:"frameData",
  24. leave:"leave" // 退出,游戏到大厅
  25. };
  26. qqNetwork.msgProcess = function(msgName, msgData) {
  27. if (typeof msgData === "string") {
  28. if (msgData != "gameStart") {
  29. msgData = JSON.parse(msgData);
  30. }
  31. }
  32. switch (msgName) {
  33. case qqNetwork.room2Game.channelCreated:
  34. console.log('channelCreated')
  35. var paramFlag1 = false;
  36. var paramFlag2 = false;
  37. if (msgData.playerInfos[0].headurl && msgData.playerInfos[0].headurl.indexOf("?") !== -1) {
  38. paramFlag1 = true;
  39. }
  40. if (msgData.playerInfos[1].headurl && msgData.playerInfos[1].headurl.indexOf("?") !== -1) {
  41. paramFlag2 = true;
  42. }
  43. msgData.playerInfos[0].headurl = decodeURI(msgData.playerInfos[0].headurl);
  44. msgData.playerInfos[1].headurl = decodeURI(msgData.playerInfos[1].headurl);
  45. if (paramFlag1) {
  46. msgData.playerInfos[0].headurl = msgData.playerInfos[0].headurl + "&aa=aa.jpg";
  47. } else {
  48. msgData.playerInfos[0].headurl = msgData.playerInfos[0].headurl + "?aa=aa.jpg";
  49. }
  50. if (paramFlag2) {
  51. msgData.playerInfos[1].headurl = msgData.playerInfos[1].headurl + "&aa=aa.jpg";
  52. } else {
  53. msgData.playerInfos[1].headurl = msgData.playerInfos[1].headurl + "?aa=aa.jpg";
  54. }
  55. qqNetwork.send(qqNetwork.game2Room.gameReady, {});
  56. break;
  57. }
  58. if (this.msgCb) this.msgCb(msgName, msgData);
  59. };
  60. qqNetwork._init = function() {
  61. this.qqSdkInitFlag = true;
  62. if (this.debugFlag) {
  63. return;
  64. }
  65. console.log('EnterInitFunction');
  66. if (window.qqgame) {
  67. console.log('QQ Init');
  68. window.qqgame.onMessage(function(msgName, msgData) {
  69. this.msgProcess(msgName, msgData)
  70. }.bind(this));
  71. }
  72. };
  73. qqNetwork.connect = function(ip, port, cb) {
  74. port = port || 8181;
  75. // 测试用,正在大厅用不上
  76. console.log('Socket Connet');
  77. var socketUrl = port !== 0 ? "ws://" + ip + ":" + port: "ws://" + ip;
  78. if (this.web_socket) {
  79. this.web_socket.close();
  80. this.web_socket = null;
  81. }
  82. this.web_socket = new WebSocket(socketUrl);
  83. // this.web_socket.binaryType = "arraybuffer";
  84. this.web_socket.onmessage = function (event) {
  85. var data = JSON.parse(event.data);
  86. var msgName = data["eID"];
  87. var msgData = data["ePara"];
  88. this.msgProcess(msgName, msgData);
  89. // console.log("receive data:" + event.data);
  90. }.bind(this);
  91. this.web_socket.onopen = function (event) {
  92. cc.log("onopen------------");
  93. if (cb) cb();
  94. if (this.msgCb) this.msgCb("online", {});
  95. }.bind(this);
  96. this.web_socket.onclose = function (event) {
  97. cc.log("onclose------------");
  98. this.web_socket = null;
  99. if (this.msgCb) this.msgCb("offline", {});
  100. }.bind(this);
  101. this.web_socket.onerror = function (event) {
  102. cc.log("onerror------------");
  103. if (this.msgCb) this.msgCb("offline", {});
  104. }.bind(this);
  105. };
  106. qqNetwork.send = function(reqName, originData) {
  107. var data = {
  108. "eID":reqName,
  109. "ePara":originData,
  110. };
  111. // console.log("send data:" + JSON.stringify(data));
  112. if (!this.debugFlag) {
  113. if (this.qqSdkInitFlag) {
  114. window.qqgame.invoke(reqName, originData);
  115. } else {
  116. setTimeout(function() {
  117. this.send(reqName, originData);
  118. }.bind(this), 200);
  119. }
  120. } else {
  121. if (!this.web_socket) {
  122. console.error("debug mode need connect websocket");
  123. return;
  124. }
  125. this.web_socket.send(JSON.stringify(data));
  126. }
  127. };
  128. qqNetwork.enableDebug = function() {
  129. this.debugFlag = false;
  130. console.log('debugFlag=='+this.debugFlag);
  131. };
  132. qqNetwork.regMsgCallback = function(cb) {
  133. qqNetwork.msgCb = cb;
  134. };
  135. qqNetwork._init();
  136. window.network = qqNetwork;