Example #1
0
  constructor(app: App, id: string, query: ClientQuery, conn: ReactiveSocket) {
    super();

    this.connected = true;
    this.plugins = [];
    this.connection = conn;
    this.id = id;
    this.query = query;
    this.messageIdCounter = 0;
    this.app = app;

    this.broadcastCallbacks = new Map();
    this.requestCallbacks = new Map();

    const client = this;
    this.responder = {
      fireAndForget: (payload: {data: string}) => {
        client.onMessage(payload.data);
      },
    };

    conn.connectionStatus().subscribe({
      onNext(payload) {
        if (payload.kind == 'ERROR' || payload.kind == 'CLOSED') {
          client.connected = false;
        }
      },
      onSubscribe(subscription) {
        subscription.request(Number.MAX_SAFE_INTEGER);
      },
    });
  }
Example #2
0
 rawSend(method: string, params?: Object): void {
   const data = {
     method,
     params,
   };
   this.app.logger.info(data, 'message:send');
   this.connection.fireAndForget({data: JSON.stringify(data)});
 }
Example #3
0
    return new Promise((resolve, reject) => {
      const id = this.messageIdCounter++;
      const metadata: RequestMetadata = {
        method,
        id,
        params,
      };
      this.requestCallbacks.set(id, {reject, resolve, metadata});

      const data = {
        id,
        method,
        params,
      };

      this.app.logger.info(data, 'message:call');
      this.startTimingRequestResponse({method, id, params});
      this.connection.fireAndForget({data: JSON.stringify(data)});
    });