You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Node.js实现客户端设备连接WiFi?

解决方案

1. 利用iOS/Android原生系统能力实现自动连接

iOS端:生成.mobileconfig配置文件

iOS支持通过安装配置文件自动连接WiFi,你可以在Node.js中动态生成该文件并返回给客户端:

app.get('/wifi-ios', (req, res) => {
  const ssid = 'myssid';
  const password = 'mypassword';
  const configContent = `<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>AutoJoin</key>
      <true/>
      <key>EncryptionType</key>
      <string>WPA</string>
      <key>SSID_STR</key>
      <string>${ssid}</string>
      <key>Password</key>
      <string>${password}</string>
      <key>PayloadType</key>
      <string>com.apple.wifi.managed</string>
      <key>PayloadUUID</key>
      <string>550e8400-e29b-41d4-a716-446655440000</string>
      <key>PayloadIdentifier</key>
      <string>com.example.wifi</string>
      <key>PayloadVersion</key>
      <integer>1</integer>
    </dict>
  </array>
  <key>PayloadType</key>
  <string>Configuration</string>
  <key>PayloadUUID</key>
  <string>550e8400-e29b-41d4-a716-446655440001</string>
  <key>PayloadIdentifier</key>
  <string>com.example.config</string>
  <key>PayloadVersion</key>
  <integer>1</integer>
  <key>PayloadDisplayName</key>
  <string>WiFi配置文件</string>
</dict>
</plist>`;

  res.set('Content-Type', 'application/x-apple-aspen-config');
  res.set('Content-Disposition', 'attachment; filename="wifi-setup.mobileconfig"');
  res.send(configContent);
});

用户访问该路由后,iOS会提示安装配置文件,完成后自动连接指定WiFi。

Android端:通过Intent唤起WiFi设置

Android支持通过浏览器Intent传递WiFi参数,自动填充SSID和密码:

app.get('/wifi-android', (req, res) => {
  const ssid = 'myssid';
  const password = 'mypassword';
  const htmlContent = `<!DOCTYPE html>
<html>
<body>
  <button onclick="connectWiFi()">一键连接WiFi</button>
  <script>
    function connectWiFi() {
      window.location.href = \`intent:#Intent;action=android.net.wifi.PICK_WIFI_NETWORK;S.SSID=${ssid};S.PASSWORD=${password};end;\`;
    }
  </script>
</body>
</html>`;
  res.send(htmlContent);
});

用户点击按钮后,Android会打开WiFi设置界面并自动填入信息,确认即可连接。

2. 通用二维码方案(跨平台)

你之前返回的WiFi字符串是二维码的标准格式,直接返回文本手机无法识别,可在服务器生成二维码图片,用户扫描后即可触发连接:

const QRCode = require('qrcode');

app.get('/wifi-qr', async (req, res) => {
  const wifiConfig = 'WIFI:T:WPA;S:myssid;P:mypassword;H:;';
  try {
    const qrBuffer = await QRCode.toBuffer(wifiConfig);
    res.set('Content-Type', 'image/png');
    res.send(qrBuffer);
  } catch (err) {
    res.status(500).send('二维码生成失败');
  }
});

用户访问该路由会看到二维码,用手机扫描后系统会自动弹出WiFi连接提示。

3. 简易Web辅助方案(全平台兼容)

如果不想依赖系统特性,可生成一个展示WiFi信息并提供复制功能的页面,方便用户手动连接:

app.get('/', (req, res) => {
  const ssid = 'myssid';
  const password = 'mypassword';
  const htmlPage = `<!DOCTYPE html>
<html>
<body>
  <h3>WiFi连接信息</h3>
  <p>SSID: <span id="ssid">${ssid}</span> <button onclick="copyText('ssid')">复制</button></p>
  <p>密码: <span id="password">${password}</span> <button onclick="copyText('password')">复制</button></p>
  <script>
    function copyText(id) {
      const text = document.getElementById(id).textContent;
      navigator.clipboard.writeText(text).then(() => alert('已复制'));
    }
  </script>
</body>
</html>`;
  res.send(htmlPage);
});

内容的提问来源于stack exchange,提问作者ortoDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:27:30