Обрабатывать обратный вызов для класса оболочки - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть класс-оболочка для управления единичным соединением для чата.Когда сообщение сначала получает ConnectionManager, обрабатывает его как обертку, а затем вызывает его за пределами класса.Есть ли какое-либо решение для этого?

Я использую шаблон синглтона для диспетчера соединений.

let _instance = null;
class ConnectionManager{
  static _hubConnection;
  static _proxy;

  constructor(hubUrl) {
    this._hubConnection = signalr.hubConnection(hubUrl);
    this._hubConnection.logging = true;
  }

  static getInstance(){
    if(_instance == null)
      _instance = new ConnectionManager(GLOBALS.HUB_URL);

    return _instance;
  }

  createHubProxy(){
    this._proxy = this._hubConnection.createHubProxy('Hub');

    this._proxy.on('addNewMessage', (message, fileUrl) => {
      console.log(message.Body);

      if(onReceivedNewMessage)// ---> Where is right place to define?
        onReceivedNewMessage(message);
    });
  }

  getHubConnection(){
    if(this._hubConnection)
      return this._hubConnection;

    return null;
  }

  getHubProxy(){
    if(this._proxy)
      return this._proxy;

    return null;
  }


}

module.exports = ConnectionManager;

, а затем использую внешнюю сторону класса:

ConnectionManager.getInstance().onReceivedNewMessage( message => {
  console.log(message);
});

спасибо взаранее

1 Ответ

0 голосов
/ 17 сентября 2018
let _instance = null;
class ConnectionManager{
  static _hubConnection;
  static _proxy;

  constructor(hubUrl) {
    this._hubConnection = signalr.hubConnection(hubUrl);
    this._hubConnection.logging = true;
    this.createHubProxy();
  }

  static getInstance(){
    if(_instance == null)
      _instance = new ConnectionManager(GLOBALS.HUB_URL);

    return _instance;
  }

  onReceiveMessage(callback) {
      if(this._proxy) {
          this._proxy.on('addNewMessage', callback);
      }
  }

  createHubProxy(){
    this._proxy = this._hubConnection.createHubProxy('Hub');
  }

  getHubConnection(){
    if(this._hubConnection)
      return this._hubConnection;

    return null;
  }

  getHubProxy(){
    if(this._proxy)
      return this._proxy;

    return null;
  }


}

module.exports = ConnectionManager;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...