B2BÍøÂçÈí¼þ

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

±¾µØµ÷ÊÔ°æÔ­Éúwebsocket°æ

[¸´ÖÆÁ´½Ó]

1158

Ö÷Ìâ

1163

Ìû×Ó

7909

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7909
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
±¾µØµ÷ÊÔ°æÔ­Éúwebsocket°æ


±¾µØµ÷ÊÔ°æÔ­Éúwebsocket°æ B2BÍøÂçÈí¼þ
±¾µØµ÷ÊÔ°æÔ­Éúwebsocket°æ B2BÍøÂçÈí¼þ
±¾µØµ÷ÊÔ°æÔ­Éúwebsocket°æ B2BÍøÂçÈí¼þ

  1. /**
  2. * WebSocket ÆÁÄ»½ØÍ¼´«Êä - ±¾µØµ÷Ê԰棨AIWROK Ô­Éú websocket °æ£©
  3. *
  4. * 👉 ²Î¿¼ AIWROK IDE Îĵµ£¬5 ¸öÔ­Éú API ÕýÈ·Ç©Ãû£º
  5. *    void setSocketID(String arg0)
  6. *    void event(Function arg0=Á¬½Ó³É¹¦, Function arg1=½ÓÊÕÏûÏ¢,
  7. *               Function arg2=Á¬½Óʧ°Ü, Function arg3=¶Ï¿ªÁ¬½Ó)
  8. *    void connet(String wsUrl)      ¡û ×¢ÒâÆ´Ð´£ºconnet£¨Ë«nÉÙc£¬²»ÊÇ connect£©
  9. *    void send(Object msg)
  10. *    void close()
  11. *
  12. * ÅäºÏ WebSocket²âÊÔ·þÎñÆ÷ ʹÓÃ
  13. */


  14. print.log("===== WebSocket ÆÁÄ»½ØÍ¼´«Ê䣨AIWROK Ô­Éú°æ£©¿ªÊ¼ =====");

  15. // ========== ÅäÖÃ ==========
  16. var config = {
  17.     serverUrl: "192.168.10.103:8886",   // ¡û ¸Ä³É PC µÄ¾ÖÓòÍø IP:¶Ë¿Ú
  18.     screenshotInterval: 5000,            // ½ØÍ¼¼ä¸ô£¨ºÁÃ룩
  19.     reconnectInterval: 2500,             // ÖØÁ¬¼ä¸ô£¨ºÁÃ룩
  20.     maxReconnectAttempts: 10,            // ×î´óÖØÁ¬´ÎÊý
  21.     connectWaitSec: 15,                  // µ¥´ÎÁ¬½ÓµÈ´ýÃëÊý
  22.     runDuration: 30000                   // ×ÜÔËÐÐʱ³¤£¨ºÁÃ룩
  23. };

  24. // ========== Á¬½Ó״̬ ==========
  25. var ws = null;          // websocket ʵÀý
  26. var state = {
  27.     connected: false,
  28.     err: null,
  29.     closed: false,
  30.     saveDir: "",
  31.     saveUrlPrefix: "",
  32.     imgCount: 0,
  33.     reconnectAttempts: 0,
  34.     totalSent: 0
  35. };
  36. var screenshotTimer = null;

  37. // ========== ·þÎñÆ÷ÏûÏ¢½âÎö ==========
  38. function parseServerMessage(raw) {
  39.     if (typeof raw !== "string") {
  40.         try { raw = String(raw); } catch (e) { raw = "" + raw; }
  41.     }
  42.     var out = { type: "UNKNOWN", raw: raw };
  43.     if (raw.indexOf("WELCOME|") === 0) {
  44.         out.type = "WELCOME";
  45.         var parts = raw.split("|");
  46.         out.id = parts[1] || "";
  47.         for (var i = 2; i < parts.length; i++) {
  48.             var eqIdx = parts[i].indexOf("=");
  49.             if (eqIdx > 0) out[parts[i].substring(0, eqIdx)] = parts[i].substring(eqIdx + 1);
  50.         }
  51.     } else if (raw.indexOf("IMG_SAVED|") === 0) {
  52.         out.type = "IMG_SAVED";
  53.         var p = raw.split("|");
  54.         out.seq = p[1] || "";
  55.         out.sizeTxt = p[2] || "";
  56.         out.absPath = p[3] || "";
  57.         out.fileUrl = p[4] || "";
  58.     } else if (raw.indexOf("IMG_FAIL|") === 0) {
  59.         out.type = "IMG_FAIL";
  60.     } else if (raw.indexOf("ECHO|") === 0) {
  61.         out.type = "ECHO";
  62.         out.text = raw.substring("ECHO|".length);
  63.     }
  64.     return out;
  65. }

  66. // ========== ºËÐÄ£ºÓà AIWROK Ô­Éú 5 API ½¨Á¢Á¬½Ó ==========
  67. function initWebSocket() {
  68.     // ÖØÖÃ״̬
  69.     state.connected = false;
  70.     state.err = null;
  71.     state.closed = false;

  72.     // ¢Ù ´´½¨
  73.     ws = new websocket();

  74.     // ¢Ú setSocketID
  75.     try { ws.setSocketID("screen_" + (new Date().getTime())); }
  76.     catch (e) { printl("  ⚠️  setSocketID ºöÂÔÒì³£: " + e.message); }

  77.     // ¢Û event(4 ¸öλÖûص÷£¬Ë³Ðò²»ÄÜ´í£¡)
  78.     //   arg0 = Á¬½Ó³É¹¦   arg1 = ½ÓÊÕÏûÏ¢   arg2 = Á¬½Óʧ°Ü   arg3 = ¶Ï¿ª
  79.     try {
  80.         ws.event(
  81.             function () {                              // arg0 Á¬½Ó³É¹¦
  82.                 state.connected = true;
  83.                 state.err = null;
  84.                 state.reconnectAttempts = 0;
  85.                 print.log("WS: onopen");
  86.                 printl("✅ Á¬½Ó³É¹¦£¨onopen£©");
  87.                 startScreenshotTimer();
  88.             },
  89.             function (msg) {                           // arg1 ½ÓÊÕÏûÏ¢
  90.                 var raw;
  91.                 try { raw = String(msg); } catch (e) { raw = ""; }
  92.                 print.log("WS: onmessage len=" + raw.length);
  93.                 var parsed = parseServerMessage(raw);

  94.                 if (parsed.type === "WELCOME") {
  95.                     state.saveDir = parsed.save_dir || "";
  96.                     state.saveUrlPrefix = parsed.save_file_url || "";
  97.                     printl("&#128233; WELCOME " + parsed.id);
  98.                     if (state.saveDir) {
  99.                         printl("&#128193; ±£´æÄ¿Â¼: " + state.saveDir);
  100.                         printl("&#128279; Ŀ¼URL: " + state.saveUrlPrefix);
  101.                     }
  102.                 } else if (parsed.type === "IMG_SAVED") {
  103.                     printl("&#128190; PC Òѱ£´æÍ¼Æ¬ " + parsed.seq);
  104.                     printl("    ´óС: " + parsed.sizeTxt);
  105.                     printl("    ·¾¶: " + parsed.absPath);
  106.                     printl("    � " + parsed.fileUrl);
  107.                 } else if (parsed.type === "IMG_FAIL") {
  108.                     printl("&#128308; ·þÎñÆ÷±£´æÊ§°Ü: " + raw);
  109.                 } else if (parsed.type === "ECHO") {
  110.                     printl("&#128233; »ØÏÔ: " + parsed.text.substring(0, 150));
  111.                 } else {
  112.                     printl("&#128233; ÊÕµ½: " + raw.substring(0, 200) + (raw.length > 200 ? "..." : ""));
  113.                 }
  114.             },
  115.             function (err) {                           // arg2 Á¬½Óʧ°Ü
  116.                 var msg = "";
  117.                 try { msg = String(err); } catch (e) {}
  118.                 state.err = msg || "Á¬½Óʧ°Ü";
  119.                 state.connected = false;
  120.                 print.log("WS: onerror " + msg);
  121.                 printl("❌ Á¬½Óʧ°Ü£¨onerror£©: " + msg);
  122.                 stopScreenshotTimer();
  123.                 reconnectWebSocket();
  124.             },
  125.             function () {                              // arg3 ¶Ï¿ª
  126.                 state.closed = true;
  127.                 state.connected = false;
  128.                 print.log("WS: onclose");
  129.                 printl("⚪ Á¬½Ó¶Ï¿ª£¨onclose£©");
  130.                 stopScreenshotTimer();
  131.                 reconnectWebSocket();
  132.             }
  133.         );
  134.     } catch (e) {
  135.         printl("❌ event(4»Øµ÷) ×¢²áʧ°Ü: " + e.message);
  136.         reconnectWebSocket();
  137.         return;
  138.     }

  139.     // ¢Ü connet£¨Ë« n ÉÙ c£¬Ç§Íò±ðд³É connect£©
  140.     try {
  141.         var url = "ws://" + config.serverUrl;
  142.         printl("ÕýÔÚÁ¬½Ó: " + url + "£¨" + config.connectWaitSec + " Ã볬ʱ£©");
  143.         print.log("µ÷ÓÃ connet(" + url + ")");
  144.         ws.connet(url);
  145.     } catch (e) {
  146.         printl("❌ connet Å×Òì³£: " + e.message);
  147.         state.err = e.message;
  148.         reconnectWebSocket();
  149.         return;
  150.     }

  151.     // ͬ²½µÈ´ý£ºÈç¹ûÔÚ connectWaitSec ÃëÄÚ¼Èû´¥·¢ onopen Ҳû onerror£¬¾Íµ±×÷ʧ°Ü
  152.     var waited = 0;
  153.     while (!state.connected && !state.err && waited < config.connectWaitSec * 1000) {
  154.         sleep.millisecond(100);
  155.         waited += 100;
  156.     }
  157.     if (!state.connected && !state.err) {
  158.         state.err = "Á¬½Ó³¬Ê±£¨" + config.connectWaitSec + " ÃëÄÚûÓÐ onopen/onerror£©";
  159.         printl("❌ " + state.err);
  160.         reconnectWebSocket();
  161.     }
  162. }

  163. // ========== ¶ÏÏßÖØÁ¬ ==========
  164. function reconnectWebSocket() {
  165.     if (state.reconnectAttempts >= config.maxReconnectAttempts) {
  166.         printl("&#128721; ÒÑ´ïµ½×î´óÖØÁ¬´ÎÊý " + config.maxReconnectAttempts + "£¬Í£Ö¹ÖØÁ¬");
  167.         return;
  168.     }
  169.     state.reconnectAttempts++;
  170.     printl("⏱️  ÖØÁ¬ " + state.reconnectAttempts + "/" + config.maxReconnectAttempts + "£¬" + (config.reconnectInterval / 1000) + " ÃëºóÖØÊÔ...");
  171.     printl("ÖØÁ¬ " + state.reconnectAttempts + "/" + config.maxReconnectAttempts);

  172.     // ÏȹؾÉÁ¬½Ó
  173.     try { if (ws) ws.close(); } catch (e) {}
  174.     ws = null;

  175.     setTimeout(function () {
  176.         initWebSocket();
  177.     }, config.reconnectInterval);
  178. }

  179. // ========== ½ØÍ¼²¢·¢ËÍ ==========
  180. function sendScreenshot() {
  181.     if (!ws || !state.connected) {
  182.         print.log("Ìø¹ý½ØÍ¼£ºÎ´Á¬½Ó");
  183.         return;
  184.     }
  185.     try {
  186.         print.log("&#128248; ½ØÈ¡ÆÁÄ»...");
  187.         printl("&#128248; ½ØÍ¼ÖÐ...");

  188.         var screenshot = screen.screenShotFull();
  189.         if (!screenshot) { printl("❌ ½ØÍ¼Ê§°Ü"); return; }

  190.         print.log("&#128260; ת Base64...");
  191.         var base64Data = "" + screenshot.toBase64();   // ǿת³É JS ×Ö·û´®

  192.         var sizeChars = base64Data.length;
  193.         var sizeKB = Math.round((sizeChars * 0.75) / 1024);   // ´ÖÂÔ¹ÀËãÕæÊµ×Ö½Ú
  194.         printl("&#128230; ͼƬ´óС: " + sizeChars + " ×Ö·û£¨Ô¼ " + sizeKB + " KB£©");

  195.         try { screenshot.recycle(); } catch (e) {}   // ÊÍ·Å Java Bitmap ÄÚ´æ

  196.         state.totalSent++;
  197.         printl("&#128228; ·¢ËÍͼƬ #" + state.totalSent + " ...");
  198.         ws.send(base64Data);
  199.         state.imgCount++;
  200.         printl("✅ ÒÑ·¢ËÍͼƬ #" + state.totalSent + "£¨" + sizeKB + " KB£©");

  201.     } catch (e) {
  202.         printl("❌ ·¢ËͽØÍ¼³ö´í: " + e.message);
  203.         print.log("sendScreenshot Òì³£: " + e.message);
  204.     }
  205. }

  206. // ========== ¶¨Ê±½ØÍ¼¶¨Ê±Æ÷ ==========
  207. function startScreenshotTimer() {
  208.     if (screenshotTimer) { try { clearInterval(screenshotTimer); } catch (e) {} }

  209.     print.log("Æô¶¯¶¨Ê±½ØÍ¼£¬¼ä¸ô " + config.screenshotInterval + " ºÁÃë");
  210.     printl("⏰ ¶¨Ê±½ØÍ¼ÒÑÆô¶¯£¨¼ä¸ô " + (config.screenshotInterval / 1000) + " Ã룩");

  211.     // Á¢¼´·¢µÚÒ»ÕÅ
  212.     setTimeout(function () { sendScreenshot(); }, 300);

  213.     screenshotTimer = setInterval(function () {
  214.         if (state.connected) sendScreenshot();
  215.     }, config.screenshotInterval);
  216. }

  217. function stopScreenshotTimer() {
  218.     if (screenshotTimer) {
  219.         try { clearInterval(screenshotTimer); } catch (e) {}
  220.         screenshotTimer = null;
  221.         print.log("Í£Ö¹¶¨Ê±½ØÍ¼");
  222.     }
  223. }

  224. // ========== ¹Ø±ÕÁ¬½Ó ==========
  225. function disconnectWebSocket() {
  226.     stopScreenshotTimer();
  227.     if (ws) {
  228.         try { ws.close(); } catch (e) {}
  229.         ws = null;
  230.     }
  231.     state.connected = false;
  232.     state.closed = true;
  233.     printl("&#128268; ÒѹرÕÁ¬½Ó");
  234. }

  235. // ========== Ö÷³ÌÐòÈë¿Ú ==========
  236. function main() {
  237.     try {
  238.         printl("========================================");
  239.         printl("  WebSocket ÆÁÄ»½ØÍ¼´«Êä - Ô­Éú°æ");
  240.         printl("  ·þÎñÆ÷: " + config.serverUrl);
  241.         printl("  ×ÜÔËÐÐ: " + (config.runDuration / 1000) + " Ãë    ½ØÍ¼¼ä¸ô: " + (config.screenshotInterval / 1000) + " Ãë");
  242.         printl("  Á¬½ÓAPI: setSocketID ¡ú event(4»Øµ÷) ¡ú connet ¡ú send ¡ú close");
  243.         printl("========================================");
  244.         printl("ℹ️ È·±£ PC ÒÑÔËÐÐ: python WebSocket²âÊÔ·þÎñÆ÷");

  245.         // Æô¶¯Á¬½Ó£¨´øÒì²½ÖØÊÔ£©
  246.         initWebSocket();

  247.         // ×ÜÔËÐÐʱ³¤µ¹¼ÆÊ±
  248.         print.log("ÔËÐÐ " + (config.runDuration / 1000) + " Ãëºó×Ô¶¯½áÊø");
  249.         printl("⏳ ÔËÐÐ " + (config.runDuration / 1000) + " Ãëºó×Ô¶¯½áÊø");
  250.         sleep.millisecond(config.runDuration);

  251.         // ½áÊø
  252.         disconnectWebSocket();

  253.         printl("");
  254.         printl("===== Ö´ÐнáÊø =====");
  255.         printl("  ³¢ÊÔ·¢ËÍ: " + state.totalSent + " ÕÅ");
  256.         printl("  ¼ÆÊýÏÔʾ: " + state.imgCount + " ÕÅ");
  257.         if (state.saveDir) printl("  PC ±£´æÄ¿Â¼: " + state.saveDir);
  258.         print.log("===== ÆÁÄ»½ØÍ¼´«Êä½áÊø£¬·¢ËÍ " + state.totalSent + " ÕÅ =====");

  259.     } catch (e) {
  260.         print.log("Ö÷³ÌÐòÒì³£: " + e.message);
  261.         printl("❌ ³ÌÐò´íÎó: " + e.message);
  262.         try { disconnectWebSocket(); } catch (e2) {}
  263.     }
  264. }

  265. main();
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

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

¹Ø±Õ

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

map2

GMT+8, 2026-8-19 08:20 , Processed in 0.125364 second(s), 36 queries .

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