这是一个非常非常恶化的情况。在设备上编译并运行后,我无法连接到本地主机套接字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。 在浏览器或设备上启动之间,我没有更改任何连接
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
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'));
如果您需要其他任何信息,请告诉我,我会更新
答案 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地址。
希望这很有意义