无法通过本地网络连接到 socket.io 服务器

Unable to connect to socket.io server over local network

我正在尝试通过 socket.io 在我的 nodeJS 服务器和 vueJS 应用程序之间建立通信。到目前为止,我已经能够在我的主计算机上进行套接字通信。当 运行 我的节点服务器和我的 vue 应用程序处于开发模式时,我可以在浏览器中打开 vue 应用程序,我看到连接来自我的服务器。

但是,当我在 iPad(连接到同一个 wifi)上打开 vueJS 应用程序时,vue 应用程序加载并运行良好,但我的套接字连接从未通过。我也无法通过在不同的 PC 上打开 vueJS 应用程序来连接到套接字服务器(也连接到与服务应用程序的 PC 相同的 wifi)所以 iPad 不是这里的问题。

我的本地网络会不会有什么东西会阻止连接?

我已经尝试使用普通 socket.io 客户端、vue-socketIO 和 vue-socketIO-extended 设置套接字连接,但每个库都有相同的问题。这是我使用 vue-socketIO-extended 的代码:

main.js

import VueSocketIOExt from 'vue-socket.io-extended';
import { io } from 'socket.io-client';

const socket = io('http://localhost:3000');
Vue.use(VueSocketIOExt, socket);

App.js

  sockets: {
    connect() {
      // Fired when the socket connects.
      console.log('connect')
    },

    disconnect() {
      console.log('disconnect')
    }
  }

server.js

const app = require('express')();
const http = require('http').createServer(app);
const io = require('socket.io')(http, {
  cors: {
    origins: ['http://localhost:8080']
  }
});


app.get('/', (req, res) => {
  res.send('<h1>Hey Socket.io</h1>');
});


io.on('connection', (socket) => {

  console.log('a user connected');

  socket.on('disconnect', () => {
    console.log('user disconnected');
  });

  socket.on('my message', (msg) => {
    io.emit('my broadcast', `server: ${msg}`);
  });

});


http.listen(3000, () => {
  console.log('listening on *:3000');
});

那是因为浏览器试图连接到位于 http://localhost:3000 的 WS 服务器,本地主机解析为 IP 127.0.0.1,这是您设备的环回地址,在您的 iPad 本地主机上是 iPad 并且 iPad.

上的 127.0.0.1:3000 上没有任何 运行

您需要使用运行您的服务器的设备的 IP,例如:
const socket = io('http://192.168.0.2:3000');