@ aspnet / signalr Функция углового запускающего сигнала для тестирования - PullRequest
0 голосов
/ 05 октября 2019

Я сталкиваюсь со следующей проблемой в Angular и @ aspnet / signalr: я не могу вызвать функции, которые вызываются при получении SignalR. Я хочу это для целей тестирования, чтобы я мог манипулировать данными локально во внешнем интерфейсе и запускать сигнал.

Я слушаю такие функции в коде:

public addUserChangeListener() {
  this.hubConnection.on('user/changed', user => {
  // Do awesome stuff here
  });
}

И вот как ядобавил эту функцию к моему сигналу:

this.signalRService.startConnection();
this.signalRService.addUserChangeListener();

Затем есть инициализирующая часть для сервиса:

  public startConnection() {
    this.hubConnection = new signalR.HubConnectionBuilder()
        .withUrl('/signalrtest')
        .build();

    this.hubConnection
        .start()
        .then(() => console.log('Connected'))
        .catch(err => console.error(err));
  }

И вот первая проблема: я пытаюсь сделать это в автономном режиме , и поэтому я могу ошибки. Я не хочу использовать внутренний сервер вообще. Поэтому служба SignalR должна работать в автономном режиме, и я хочу запускать функции из других служб или контроллеров.

Как я могу это сделать? Есть ли способ?

1 Ответ

1 голос
/ 05 октября 2019

Вы не хотите использовать Signal-R, если хотите обновить свою клиентскую часть. Вы можете добиться обмена данными между любыми компонентами, используя RxJS

import { Subject } from 'rxjs';

@Injectable({
    providedIn: 'root'
})
export class DataService{
    public $data = new Subject<any>();

    constructor(injector: Injector) {
       super(injector);
    }

    public publishData(data: any) {
       this.$data.next(data);
    }

}

. Затем вы можете получать обновления от любого компонента в вашем приложении, подписавшись на тему следующим образом:

constructor(private dataService: DataService) {
   this.getData()
}
private getData() {
   this.dataService.$data.subscribe(data => {
      // This will be hit every time the publishData method sends new data
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...