Я сталкиваюсь с проблемой при работе с сокетом 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');