Я следовал учебному пособию под веб-страницей: https://stomp -js.github.io / guide / ng2-stompjs / 2018/11/04 / ng2-stomp-with-angular7.html .
Все работало замечательно, пока я не получил часть, где мне нужно было перенести всю конфигурацию приложения, включая URL-адрес веб-сокета.С моим недостаточным знанием Angular мне довольно трудно этого добиться.Проблема в том, что в учебнике он жестко задан:
export const myRxStompConfig: InjectableRxStompConfig = {
// Which server?
brokerURL: 'ws://127.0.0.1:15674/ws',
, и я подготовил этот класс для получения URL-адресов API:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class AppConfig {
private config: object = null;
private env: object = null;
constructor(private http: HttpClient) {}
public getConfig(key: any) {
return this.config[key];
}
public getEnv(key: any) {
return this.env[key];
}
getConfigs(): Promise<Object> {
return new Promise((resolve, reject) => {
this.http.get('assets/config/env.json').subscribe((envResponse: any)
=> {
this.env = envResponse;
let request: any = null;
switch (envResponse.env) {
case 'production':
{
request = this.http.get(
'assets/config/api.' + this.getEnv('env') + '.json'
);
}
break;
case 'development':
{
request = this.http.get(
'assets/config/api.' + this.getEnv('env') + '.json'
);
}
break;
case 'default':
{
console.error('Environment file is not set or invalid');
resolve(true);
}
break;
}
if (request) {
request.subscribe(responseData => {
this.config = responseData;
resolve(true);
});
} else {
console.error('Env config file "env.json" is not valid');
resolve(true);
}
});
});
}
}
Я пытался что-то вроде этого:
export class Stomp {
public static brokerURL = null;
public static heartbeatIncoming: 0; // Typical value 0 - disabled
public static heartbeatOutgoing: 0; // Typical value 20000 - every 20 seconds
public static reconnectDelay: 5000;
constructor(private appConfig: AppConfig) {
Stomp.brokerURL = this.appConfig.getConfig('openbatonWS') + '/websocketRD/websocket';
}
Но не повезло.Можете ли вы указать мне в правильном направлении.Как я могу добиться, чтобы вывести brokerURL в InjectableRxStompConfig.
Спасибо, Urban