我实际上正在开发 ElectronJS 应用程序和 Ionic 应用程序。
Electron 应用程序有一个 Socket 服务器(使用 SockJS),Ionic 应用程序有 Socket 客户端。
我的问题是,当我在同一设备上启动这两个应用程序时,它工作正常,但是,当在我的计算机上启动 Electron 应用程序并在我的 Android 设备上启动 Ionic 应用程序时,它无法工作。
我尝试使用我的本地IP,localhost,0.0.0.0,127.0.0.1。但没有人工作。
电子:
const {ipcMain} = require('electron')
let app = require('express')();
const http = require('http').Server(app);
let io = require('socket.io')(http);
io.sockets.on('connection', function (socket) {
console.log('socket connected');
socket.on('disconnect', function () {
console.log('socket disconnected');
});
socket.emit('text', 'wow. such event. very real time.');
});
var port = process.env.PORT || 9999;
http.listen(port, function(){
console.log('listening in http://localhost:' + port);
});
离子:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Socket, SocketIoConfig } from 'ngx-socket-io';
@Injectable({
providedIn: 'root'
})
export class CoreService {
config: SocketIoConfig
private socket: Socket
constructor(private http:HttpClient) {
this.config = { url: 'http://localhost:9999', options: { secure: true } };
}
connectSocket() {
this.socket = new Socket(this.config)
this.socket.connect()
this.socket.on('text',(value) => {
console.log(value)
})
}
}
如果有人可以帮助我。
编辑1
我尝试了很多事情。我已停用防火墙进行测试并尝试此 IP(本地主机,0.0.0.0,本地 IP,127.0.0.1),但没有人工作。
当我在同一台计算机上时,通信可以正常工作(模拟器或网络浏览器上的 Ionic)。但是当我在我的 Android 设备上测试时,它不起作用。 (我在同一个网络)
我在离子上没有错误:
D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
W/InputMethodManager: startInputReason = 1
I/HwSecImmHelper: mSecurityInputMethodService is null
I/HwSecImmHelper: mSecurityInputMethodService is null
I/HwSecImmHelper: mSecurityInputMethodService is null
I/HwSecImmHelper: mSecurityInputMethodService is null
I/HwSecImmHelper: mSecurityInputMethodService is null
I/HwSecImmHelper: mSecurityInputMethodService is null
我现在使用 Socket.io 而不是 SockJS,但仍然无法工作..
Puede ser por varias razones。 los cors,debe habilitarlos en tu app electronics en config.
cors: {
origin: '*',
},
您的路由器 puede que este bloqueando las entradas y salidas (busca como habilitar tu puerto)。 您是私人的。 我的路由器没有 WPA2 功能。 在你的离子应用程序中,没有在你的电脑上使用本地主机的IP地址。我不知道有什么问题