Сокет NativeScript не подключается к серверу (экземпляр на ioBroker) - PullRequest
0 голосов
/ 30 апреля 2020

Я сталкиваюсь с проблемой при работе с сокетом NativeScript, пытающимся подключиться к экземпляру в ioBroker. Ошибка отсутствует, но соединение также не установлено. Я попытался подключиться к нему через веб-приложение, и оно работало, поэтому не должно быть проблем с сервером. Это то, что я сделал в NativeScript:

Я создаю эту службу:

import { Injectable } from '@angular/core';
import * as SocketIO from "nativescript-socketio";;
import { Observable } from 'rxjs';
import * as Rx from 'rxjs/Rx';


@Injectable({
  providedIn: 'root'
})
export class SocketService {
  options = {
    query: {
      token: '',
    },
    android: {
      // http://socketio.github.io/socket.io-client-java/apidocs/io/socket/client/IO.Options.html
    },
    ios: {
      // https://nuclearace.github.io/Socket.IO-Client-Swift/Enums/SocketIOClientOption.html
    }
  };

 private socketio : SocketIO.SocketIO;

  connectToSocket(): Rx.Subject<MessageEvent>{
    this.socketio = SocketIO.connect('http://192.168.178.50:8085', this.options);
    const observable = new Observable(observer => {
      this.socketio.on('lampe', data => {
        console.log('message from server');
        observer.next(data);
      });
      return () => {
        this.socketio.disconnect();
      };
    });
    const observer = {
      next: (data:Object) => {
        this.socketio.emit('lampe', data);
      }
    };
    return Rx.Subject.create(observer, observable)
  }


  disconnect(){
    this.socketio.disconnect();
  }
}

Обработчик:

import { Injectable } from '@angular/core';
import { SocketService } from './socket.service';
import { Observable, Subject } from 'rxjs/Rx';


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

  messages: Subject<any>;

  constructor(private socketService: SocketService) { 
    this.messages = <Subject<any>>this.socketService
    .connectToSocket()
    .map((response: any): any => {
      return response;
    });
  }

  sendmsg(msg){
    this.messages.next(msg);
  }
}

Также в моем домашнем компоненте есть кнопка, которая вызывает sendmsg () с this.connHandlerService.sendmsg ('val: false');

...