Angular 8 / ionic 4 / Socket.io-无法连接到本地主机服务器

时间:2019-12-19 12:04:25

标签: node.js angular sockets socket.io

这是一个非常非常恶化的情况。在设备上编译并运行后,我无法连接到本地主机套接字io服务器。 但是如果通过浏览器启动它,我就可以连接...

所以回顾一下:

$ ionic serve将在我的浏览器中启动,我连接到在本地主机端口8080上运行的socketio服务器

$ ionic cordova run android --device --livereload给出错误:

  

zone-evergreen.js:2952 GET http://localhost:8080/socket.io/?EIO=3&transport=polling&t=MyU0Jo6 net :: ERR_CONNECTION_REFUSED

因此,我无法连接到在端口8080上运行的localhost。 在浏览器或设备上启动之间,我没有更改任何连接

index.html

<script src="http://localhost:8080/socket.io/socket.io.js"></script>

app.module.ts

ngx-socket-io

import { SocketIoModule, SocketIoConfig } from 'ngx-socket-io';
const config: SocketIoConfig = { url: 'localhost:8080', options: { secure: true } };

@ngModule({
  imports: [
      SocketIoModule.forRoot(config),
  ]
})

服务器

  require('dotenv').config({ path: __dirname + '/.env' });
  const app = require('express')();
  const PORT = process.env.CHAT_PORT || 8080;
  const server = require('http').createServer(app);
  const io = require('socket.io')(server);

  server.listen(PORT, (): void => console.log('listening', PORT));

  io.on('connection', socket => console.log('connected'));

如果您需要其他任何信息,请告诉我,我会更新

1 个答案:

答案 0 :(得分:1)

这就是我想发生的事情:

当您在PC上运行离子服务时,您的 index.html 代码指向同一台本地PC上正在运行的“网络服务器”(基本上指向“自我”) ):

<script src="http://localhost:8080/socket.io/socket.io.js"></script>

在运行实时重装时,index.html在您的移动设备上运行,试图指向...“ localhost”(再次为自身),它不是您的PC,而是您的未运行套接字的移动设备。 io ...

要修复此问题,您需要从PC提供socket.io,但您的代码应通过绝对地址(而不是通过localhost)指向您的PC。例如,如果本地PC的本地网络地址为192.168.0.5->,则应将初始化代码指向该地址,并确保连接到同一网络的移动设备具有自己的192.168.0.X地址。

希望这很有意义