Потеря значения переменной в node.js, как это можно решить? - PullRequest
0 голосов
/ 24 августа 2018

Я использую библиотеку socket.io узла и хочу создать сокет-клиенты в методе init и использовать этот "пул" клиентов в другом методе, но потеряю это значение, пример кода ниже:

import * as socketio from 'socket.io';

class SocketService {
  public io: socketio.Server;
  public server: any;
  public socketClients: Map<number, string[]> = new Map();
  public a;

  constructor(server: any) {
    this.server = server;

    this.initSocket();
  }

  public initSocket() {
    this.io =  socketio(this.server, {path: '/api/socket'});

    this.io.use(async (socket: socketio.Socket, next: express.NextFunction) => {
      this.a = 'value';
    });
  }

  public notifyUsers(req: any): any {
    console.log(this.a); // undefined
  }

}

Я не понимаю, почему a это метод undefined int notifyUsers, вы можете мне помочь, ребята?

1 Ответ

0 голосов
/ 31 августа 2018

Я решил эту проблему, потому что мой экземпляр Service был создан несколько раз и перезаписал мою переменную.

Решение: Создайте экземпляр один раз в основном файле .ts и экспортируйте его.

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