同一网络上 2 个设备的套接字无法工作

问题描述 投票:0回答:1

我实际上正在开发 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,但仍然无法工作..

javascript angular sockets ionic-framework electron
1个回答
0
投票

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地址。我不知道有什么问题

© www.soinside.com 2019 - 2024. All rights reserved.