#ngx-socket-io pass token

2 messages · Page 1 of 1 (latest)

solemn lark
#

How do i pass Observable idToken from firebase to ngx-socket-io

socketio.service.ts

import { Injectable } from '@angular/core';
import { CustomSocket } from '../classes/socket.class';

@Injectable({
  providedIn: 'root'
})
export class SocketioService {

  constructor(private customSocket: CustomSocket) { }

  listen(eventName: string) {
    return this.customSocket.fromEvent(eventName);
  }
}

custom-socket.class.ts

import { Injectable } from '@angular/core';
import { Socket } from 'ngx-socket-io';
import { switchMap } from 'rxjs';
import { AuthService } from '../services/auth.service';

@Injectable()
export class CustomSocket extends Socket {
  constructor(
    private privateAuthService: AuthService
  ) {
    // i want to add firebase token over here
    super({
      url: '<url>', options: { }
    });
    // this.privateAuthService.idToken$.subscribe(idToken => {
    //  this.ioSocket.auth = { token: `Bearer ${idToken}` };
    // });
  }
}

auth.service.ts

import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/compat/auth';
@Injectable({
  providedIn: 'root',
})
export class AuthService {
  constructor(private angularFireAuth: AngularFireAuth) { }
  get idToken$() {
    return this.angularFireAuth.idToken;
  }

final harbor
#

Add that token as an Observable (AngularFireAuth#authState) to the AuthService inject that service where you need the idToken.