B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 1|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

websocketÔ¶³ÌÍ£Ö¹ÊÖ»ú½ÓÊÕÆ÷

[¸´ÖÆÁ´½Ó]

1160

Ö÷Ìâ

1165

Ìû×Ó

7917

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7917
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
websocketÔ¶³ÌÍ£Ö¹ÊÖ»ú½ÓÊÕÆ÷
websocketÔ¶³ÌÍ£Ö¹ÊÖ»ú½ÓÊÕÆ÷ B2BÍøÂçÈí¼þ

websocketÔ¶³ÌÍ£Ö¹ÊÖ»ú½ÓÊÕÆ÷ B2BÍøÂçÈí¼þ https://www.yuque.com/aiwork/nba2pr/htyaws99kck2ztr8

websocketÔ¶³ÌÍ£Ö¹ÊÖ»ú½ÓÊÕÆ÷ B2BÍøÂçÈí¼þ
  1. // ============================================================================
  2. // ½ÓÈëʾÀý - ÄãµÄÒµÎñ½Å±¾ÈçºÎ½ÓÈ롸Զ³ÌÍ£Ö¹½ÓÊÕÆ÷¡¹
  3. // ============================================================================
  4. // ¡¾AIWROK ¼ÓÔØÃ÷ÎÄ JS µÄÕýÈ··½Ê½¡¿
  5. //   - Import("xxx.js")  ¡û Ö»ÄܼÓÔØ¼ÓÃܺóµÄ JS£¬Ã÷ÎIJ»ÐУ¡
  6. //   - thread.runJsFile("xxx.js", "Ïß³ÌÃû")  ¡û ¿ÉÒÔ¼ÓÔØÃ÷ÎÄ JS£¨ÍƼö£©
  7. //
  8. // ËùÒÔ½ÓÈëÖ»Ðè 3 ÐУº
  9. //   var stopThread = new thread();
  10. //   stopThread.runJsFile("Ô¶³ÌÍ£Ö¹½ÓÊÕÆ÷.js", "stop_receiver");
  11. //
  12. // ×ÓÏ̶߳ÀÁ¢ÉÏÏÂÎÄ£¬²»Ó°ÏìÖ÷½Å±¾ÒµÎñ
  13. // ÊÕµ½µçÄÔ¶Ë STOP_ALL Ö¸Áîʱ£¬×ÓÏ̵߳÷Óà runTime.stopAllRuning()
  14. // »áÍ£Ö¹ËùÓÐ×ÓỊ̈߳¨°üÀ¨Ëü×Ô¼º£©ºÍÖ÷½Å±¾
  15. // ============================================================================

  16. // === Æô¶¯Ô¶³ÌÍ£Ö¹½ÓÊÕÆ÷£¨×ÓỊ̈߳©===
  17. var stopThread = new thread();
  18. stopThread.runJsFile("Ô¶³ÌÍ£Ö¹½ÓÊÕÆ÷.js", "stop_receiver");

  19. // === ÒÔÏÂÊÇÄã×Ô¼ºµÄÒµÎñ´úÂ루ʾÀý£©===

  20. printl("=== ÎÒµÄÒµÎñ½Å±¾Æô¶¯ ===");

  21. // Ä£ÄâÒ»¸ö³¤Ê±¼äÔËÐеÄÈÎÎñ
  22. var counter = 0;
  23. while (true) {
  24.     counter++;
  25.     printl("ÒµÎñÖ´ÐÐÖÐ... µÚ" + counter + "´Î");

  26.     try { sleep.second(2); } catch (e) { break; }

  27.     // ÑÝʾ£ºÅÜ10´Îºó×Ô¼º½áÊø£¨Êµ¼Ê²»ÐèÒª£¬µçÄÔ·¢ STOP_ALL Ö¸Áî¾Í»áȫͣ£©
  28.     if (counter >= 10) {
  29.         printl("ÒµÎñÍê³É");
  30.         break;
  31.     }
  32. }

  33. printl("=== ÒµÎñ½Å±¾½áÊø ===");

  34. // ============================================================================
  35. // ¹¤×÷Á÷³Ì£º
  36. //   1. Ö÷½Å±¾Æô¶¯ ¡ú ´´½¨×ÓÏß³Ì stop_receiver£¨Á¬½ÓµçÄÔ·þÎñÆ÷£©
  37. //   2. Ö÷½Å±¾¼ÌÐøÅÜÒµÎñ
  38. //   3. µçÄԶ˵㡸һ¼üȫͣ¡¹¡ú ¹ã²¥ STOP_ALL
  39. //   4. ×ÓÏß³ÌÊÕµ½ ¡ú runTime.stopAllRuning() ¡ú Ö÷½Å±¾ + ËùÓÐ×ÓÏß³Ìȫͣ
  40. // ============================================================================
¸´ÖÆ´úÂë

  1. // ============================================================================
  2. // Ô¶³ÌÍ£Ö¹½ÓÊÕÆ÷ v5 - °´ÒÑÑéÖ¤¿ÉÓÃµÄ WebSocket Ä£Ê½ÖØÐ´
  3. // ============================================================================
  4. // ¡¾¼ÓÔØ·½Ê½¡¿ÔÚÖ÷½Å±¾¿ªÍ·¼Ó 3 ÐУº
  5. //   var stopThread = new thread();
  6. //   stopThread.runJsFile("Ô¶³ÌÍ£Ö¹½ÓÊÕÆ÷.js", "stop_receiver");
  7. //
  8. // ÅäÖ㺸ÄÏ·½ SERVER_IP ΪÄãµçÄԵľÖÓòÍø IP
  9. // ============================================================================

  10. var CONFIG = {
  11.     SERVER_IP: "192.168.10.103",
  12.     SERVER_PORT: "8886",
  13.     WS_PATH: "/",
  14.     DEVICE_NAME: "",
  15.     PING_MS: 25000,
  16.     RECONNECT_BASE_MS: 2000
  17. };

  18. // ============================================================================
  19. // È«¾Ö״̬
  20. // ============================================================================
  21. var G = {
  22.     ws: null,
  23.     connected: false,
  24.     deviceName: "",
  25.     lastPongAt: 0,
  26.     heartbeatTimer: null,
  27.     retryCount: 0,
  28.     running: true
  29. };

  30. function LOG(tag, msg) {
  31.     printl("[Í£Ö¹½ÓÊÕÆ÷][" + tag + "] " + msg);
  32. }

  33. function getDeviceName() {
  34.     if (CONFIG.DEVICE_NAME) return CONFIG.DEVICE_NAME;
  35.     try { return device.getBrand() + "_" + device.getModel(); }
  36.     catch (e) { return "phone_" + new Date().getTime(); }
  37. }

  38. function sendMsg(type, data) {
  39.     if (!G.ws || !G.connected) return false;
  40.     try {
  41.         var obj = { type: type, ts: new Date().getTime(), data: data || {} };
  42.         G.ws.send(JSON.stringify(obj));
  43.         return true;
  44.     } catch (e) {
  45.         LOG("ERROR", "send Òì³£: " + e);
  46.         return false;
  47.     }
  48. }

  49. // ============================================================================
  50. // ÐÄÌø£¨runTime.setTimeout µÝ¹é£¬ÓëÒÑÑéÖ¤´úÂëÒ»Ö£©
  51. // ============================================================================
  52. function startHeartbeat() {
  53.     stopHeartbeat();
  54.     G.lastPongAt = new Date().getTime();
  55.     function tick() {
  56.         if (!G.connected) return;
  57.         var now = new Date().getTime();
  58.         if (now - G.lastPongAt > CONFIG.PING_MS + 10000) {
  59.             LOG("WARN", "ÐÄÌø³¬Ê±£¬Ö÷¶¯¶Ï¿ª");
  60.             try { G.ws.close(); } catch (e) {}
  61.             return;
  62.         }
  63.         sendMsg("PING", { t: now });
  64.         G.heartbeatTimer = runTime.setTimeout(tick, CONFIG.PING_MS);
  65.     }
  66.     G.heartbeatTimer = runTime.setTimeout(tick, CONFIG.PING_MS);
  67. }

  68. function stopHeartbeat() {
  69.     if (G.heartbeatTimer) {
  70.         try { runTime.stopTimeout(G.heartbeatTimer); } catch (e) {}
  71.         G.heartbeatTimer = null;
  72.     }
  73. }

  74. // ============================================================================
  75. // Á¬½ÓºËÐÄ£¨ÍêÈ«ÕÕ°áÒÑÑéÖ¤µÄ WebSocketÊÖ»ú¶Ë³£ÓÃʵÀý.js ģʽ£©
  76. // ============================================================================
  77. function doConnect() {
  78.     G.connected = false;

  79.     G.deviceName = getDeviceName();
  80.     var url = "ws://" + CONFIG.SERVER_IP + ":" + CONFIG.SERVER_PORT + CONFIG.WS_PATH;
  81.     LOG("INFO", "Á¬½Ó " + url + " É豸=" + G.deviceName);

  82.     var ws = new websocket();
  83.     G.ws = ws;

  84.     try { ws.setSocketID("stop_" + new Date().getTime()); } catch (e) {}

  85.     // ¶¨ÒåËĸö»Øµ÷
  86.     var _onOpen = function () {
  87.         LOG("OK", "onopen ´¥·¢£¡Á¬½Ó³É¹¦");
  88.         G.connected = true;
  89.         G.retryCount = 0;
  90.         G.lastPongAt = new Date().getTime();
  91.         // Éϱ¨É豸ÐÅÏ¢
  92.         sendMsg("REGISTER", { device: G.deviceName });
  93.         startHeartbeat();
  94.     };

  95.     var _onMsg = function (msg) {
  96.         try {
  97.             var raw = "";
  98.             try { raw = String(msg); } catch (e) { raw = "" + msg; }
  99.             var obj = null;
  100.             try { obj = JSON.parse(raw); } catch (e) { return; }

  101.             var cmd = obj.cmd || "";
  102.             var type = obj.type || "";

  103.             if (cmd === "STOP_ALL") {
  104.                 LOG("WARN", ">>> ÊÕµ½È«Í£Ö¸Áî! <<<");
  105.                 _stopEverything();
  106.                 return;
  107.             }
  108.             if (type === "PING" || cmd === "PING") {
  109.                 sendMsg("PONG", { ts: new Date().getTime() });
  110.                 return;
  111.             }
  112.             if (type === "PONG") {
  113.                 G.lastPongAt = new Date().getTime();
  114.                 return;
  115.             }
  116.         } catch (e) {
  117.             LOG("ERROR", "´¦ÀíÏûÏ¢Òì³£: " + e);
  118.         }
  119.     };

  120.     var _onErr = function (err) {
  121.         var m = "";
  122.         try { m = String(err); } catch (e) {}
  123.         LOG("WARN", "onerror: " + (m || "ÎÞÏêÇé"));
  124.         G.connected = false;
  125.         stopHeartbeat();
  126.     };

  127.     var _onClose = function () {
  128.         LOG("INFO", "onclose£ºÁ¬½Ó¶Ï¿ª");
  129.         G.connected = false;
  130.         stopHeartbeat();
  131.     };

  132.     // ¢Ù ÓÅÏȳ¢ÊÔÊôÐÔ¸³Öµ£¨¹Ù·½Ê¾Àý websocket.js Óõķ½Ê½£©
  133.     try {
  134.         ws.onopen    = _onOpen;
  135.         ws.onmessage = _onMsg;
  136.         ws.onerror   = _onErr;
  137.         ws.onclose   = _onClose;
  138.         LOG("INFO", "»Øµ÷×¢²á: ÊôÐÔ¸³Öµ");
  139.     } catch (eProp) {
  140.         LOG("WARN", "ÊôÐÔ¸³ÖµÊ§°Ü: " + eProp + "£¬³¢ÊÔ event()");
  141.         // ¢Ú »ØÍË event(4²ÎÊý)
  142.         try {
  143.             ws.event(_onOpen, _onMsg, _onErr, _onClose);
  144.             LOG("INFO", "»Øµ÷×¢²á: ws.event(4²ÎÊý)");
  145.         } catch (eEvt) {
  146.             LOG("ERROR", "Á½ÖÖ·½Ê½¶¼Ê§°Ü: " + eEvt);
  147.             return false;
  148.         }
  149.     }

  150.     // ·¢ÆðÁ¬½Ó
  151.     try {
  152.         LOG("INFO", "µ÷ÓÃ connet('" + url + "')...");
  153.         ws.connet(url);
  154.     } catch (e1) {
  155.         try {
  156.             LOG("WARN", "connet Å×Òì³£: " + e1 + "£¬³¢ÊÔ connect()");
  157.             ws.connect(url);
  158.         } catch (e2) {
  159.             LOG("ERROR", "connet/connect ¾ùʧ°Ü: " + e1 + " / " + e2);
  160.             return false;
  161.         }
  162.     }

  163.     // µÈ´ý onopen£¨×î¶à 15 Ã룩
  164.     var waitCount = 0;
  165.     while (!G.connected && waitCount < 150) {
  166.         sleep.millisecond(100);
  167.         waitCount++;
  168.     }

  169.     if (G.connected) {
  170.         LOG("OK", "ÒÑÁ¬½Ó ·þÎñÆ÷=" + CONFIG.SERVER_IP + ":" + CONFIG.SERVER_PORT);
  171.     } else {
  172.         LOG("WARN", "15 ÃëÄÚ onopen δ´¥·¢");
  173.     }

  174.     return G.connected;
  175. }

  176. // ============================================================================
  177. // Ö÷Ñ­»·£ºÁ¬½Ó ¡ú µÈ´ý¶Ï¿ª ¡ú ÖØÁ¬
  178. // ============================================================================
  179. function mainLoop() {
  180.     while (G.running) {
  181.         G.retryCount++;
  182.         if (G.retryCount > 999) {
  183.             LOG("ERROR", "ÒÑ´ï×î´óÖØÁ¬´ÎÊý");
  184.             break;
  185.         }

  186.         var ok = doConnect();
  187.         if (!ok) {
  188.             var waitMs = CONFIG.RECONNECT_BASE_MS * Math.min(Math.pow(2, G.retryCount - 1), 5);
  189.             waitMs = waitMs + Math.floor(Math.random() * 1000);
  190.             LOG("WARN", (waitMs / 1000).toFixed(1) + "s ºóÖØÁ¬ (µÚ" + G.retryCount + "´Î)");
  191.             try { G.ws.close(); } catch (e) {}
  192.             sleep.millisecond(waitMs);
  193.             continue;
  194.         }

  195.         // ÒÑÁ¬½Ó£ºµÈ´ý¶Ï¿ª
  196.         while (G.running && G.connected) {
  197.             sleep.millisecond(500);
  198.         }
  199.         if (!G.running) break;

  200.         // ¶ÏÏßÁË
  201.         var waitMs2 = CONFIG.RECONNECT_BASE_MS * Math.min(Math.pow(2, G.retryCount - 1), 5);
  202.         waitMs2 = waitMs2 + Math.floor(Math.random() * 1000);
  203.         LOG("WARN", "¶ÏÏß " + (waitMs2 / 1000).toFixed(1) + "s ºóÖØÁ¬");
  204.         try { G.ws.close(); } catch (e) {}
  205.         sleep.millisecond(waitMs2);
  206.     }

  207.     stopHeartbeat();
  208.     try { G.ws.close(); } catch (e) {}
  209.     LOG("INFO", "½ÓÊÕÆ÷½áÊø");
  210. }

  211. // ============================================================================
  212. // ȫͣ
  213. // ============================================================================
  214. function _stopEverything() {
  215.     LOG("WARN", ">>> Ö´ÐÐȫͣ <<<");
  216.     G.running = false;
  217.     try { runTime.stopAllRuning(); } catch (e) {}
  218.     try { app.stopScript(); } catch (e) {}
  219.     try { exit(); } catch (e) {}
  220. }

  221. // ============================================================================
  222. // Æô¶¯
  223. // ============================================================================
  224. LOG("INFO", "Ô¶³ÌÍ£Ö¹½ÓÊÕÆ÷ v5 Æô¶¯");
  225. mainLoop();
  226. LOG("INFO", "Æô¶¯Íê³É");
¸´ÖÆ´úÂë



»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-8-21 08:03 , Processed in 0.108189 second(s), 35 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí