подключение ionic4 / socket.io к сети expressjs :: ERR_CONNECTION_REFUSED - PullRequest
0 голосов
/ 17 апреля 2019

Я получаю net::ERR_CONNECTION_REFUSED все время, даже когда сервер не работает.

При запуске приложения через мой браузер оно работает нормально, но затем через устройство и работает сам, я получаю ошибкувыше.

Мне кажется, что я пытался все, чтобы решить эту проблему.Я прочитал так много вопросов о переполнении стека с одной и той же проблемой.и ни один из них не помог.

app.module:

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

Примечание: выше я также пытался:

'https://localhost:8080'

'https://localhost:8080/'

' http://localhost:8080/'

'127.0.0.1: 8080'

'127.0.0.1: 8080 /'

'http://127.0.0.1:8080'

' http://127.0.0.1:8080/'

'https://127.0.0.1:8080'

' https://127.0.0.1:8080/'

сервер сокетов:

const app = require('express')();
const PORT = process.env.CHAT_PORT || 3000;
const ENV = process.env.NODE_ENV || 'development';
const server = require('http').createServer(app , {origins: 'http://127.0.0.1:8100'}); 
const io = module.exports.io = require('socket.io')(server);
const SocketManager = require('./lib/SocketManager');

примечание: я попробовал все те же варианты, что и выше, в origins:, за исключением изменения порта, поскольку мое приложение Ionic 4 работает на порте 8100. Я также попытался не включать origins:

my SocketService:

import { Socket } from 'ngx-socket-io';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
    export class ChatService {

      constructor(private socket: Socket) {}

      public sendMessage(msg: any){
        this.socket.emit('new-message', msg);

      }

      public getMessages = () => {
        return Observable.create(observer => {
          this.socket.on('new-message', messageObj => {
            observer.next(messageObj);
          })
        })
      }
    }

Я ожидаю, что он установит соединение, и мой сервер зарегистрирует, что было соединение.

Спасибо за любую помощь

ОБНОВЛЕНИЕ: я настроил свой config.xml следующим образом:

   <content original-src="index.html" src="http://192.168.1.38:8100" />
    <access origin="*" />
    <allow-navigation href="*" />

нет такой удачи.все еще заблокирован, хотя

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

После того, как я попытался разбить свой ноутбук из-за этой ошибки после попытки поиска, я получил ответ следующим образом

Во-первых

Чтобы запустить его на вашем устройстве, вы должны поместить IP Adress как 192.168.1.2 в свое приложение. Вы можете получить, открыв CMD и набрав ipconfig, если вы используете Windows, поэтому в вашем приложении это должно быть быть

const config: SocketIoConfig = { url: 'http://IP_ADDRESS:8080', options: {}};

Во-вторых

В чем была моя проблема, перейдите в брандмауэр и отключите его только для тестирования. Если вы хотите создать свое приложение, вам нужно включить только порт, на котором работает ваше приложение

Обратите внимание, что вы должны отключить его, чтобы принять соединение через указанный вами порт

Наконец

Убедитесь, что ваш локальный сервер принимает запрос от вашей клиентской стороны. Вы можете использовать Cors внешний пакет.

Для его установки:

npm install cors --save

Чтобы использовать это:

const cors = require('cors');
app.use(cors({
  origin: '*', //Or some origins you can specify
  optionsSuccessStatus: 200
}));
0 голосов
/ 24 апреля 2019

Итак, я решил проблему. Проблема достаточно глупая, и мне стыдно, что я решил ее так. Но проблема заключалась в том, что, когда я пытался подключить телефон к серверу, я использовал IP-адрес localhost 127.0.0.1:8080, который на стороне КЛИЕНТА смотрит внутрь себя! Что мне нужно было сделать, это перейти в Apple-> Системные настройки-> Сеть, а затем использовать IP-адрес из:

Wi-Fi подключен к MOVISTAR_PLUS_52B1 и имеет IP-адрес 192.168.X.XX.

вставьте это в мой конфиг как так: const config: SocketIoConfig = { url: 192.168.X.XX, options: {}};

...