tcp.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // 引入 Node.js 内置 net 模块(TCP 通信核心)
  2. const net = require("net");
  3. // "CMD=501"
  4. // 101:空中成像 开
  5. // 102:空中成像 关
  6. // 201:文物互动墙 开
  7. // 202:文物互动墙 关
  8. // 301:透明展示柜A 开
  9. // 302:透明展示柜A 关
  10. // 401:透明展示柜B 开
  11. // 402:透明展示柜B 关
  12. // 501:AI数字人 开
  13. // 502:AI数字人 关
  14. // 601:所有设备全部 开
  15. // 602:所有设备全部 关
  16. // 配置:服务器地址 + 端口
  17. const options = {
  18. host: "127.0.0.1", // 服务器IP
  19. port: 8080, // 服务器端口
  20. };
  21. // 创建 TCP 客户端
  22. const client = net.createConnection(options, () => {
  23. console.log("✅ TCP 连接成功!");
  24. // --------------------------
  25. // 需求1:连接成功 马上发送第一条消息
  26. // --------------------------
  27. client.write(`CMD=601`);
  28. });
  29. // 消息计数器(用于生成不同消息)
  30. let msgArr = [102, 202, 302, 402, 502, 101, 201, 301, 401, 501, 602, 601];
  31. let msgIndex = 0;
  32. // --------------------------
  33. // 需求2:间隔 5 秒循环发送不同消息
  34. // --------------------------
  35. const intervalId = setInterval(() => {
  36. // 生成不同内容的消息
  37. const message = `CMD=${msgArr[msgIndex]}`;
  38. // 发送
  39. client.write(message);
  40. if (msgIndex >= msgArr.length - 1) msgIndex = 0;
  41. else msgIndex++;
  42. }, 5000); // 5000ms = 5秒
  43. // 监听服务器返回的数据
  44. client.on("data", (data) => {
  45. console.log("📥 服务器响应:", data.toString());
  46. });
  47. // 连接关闭
  48. client.on("close", () => {
  49. console.log("🔌 连接已关闭");
  50. clearInterval(intervalId); // 关闭定时器
  51. });
  52. // 错误处理
  53. client.on("error", (err) => {
  54. console.error("❌ 错误:", err.message);
  55. clearInterval(intervalId);
  56. });