Обновите ChatView с помощью fromEvent observable и пространства имен сокетов - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь реализовать приложение чата в реальном времени, используя ngx-socket-io и пространства имен, но все еще есть проблема, которую я просто не могу обойти.

Когда я работал с сокетом без пространств имен, все работало нормально. Теперь я создал разные пространства имен и через чат-окна не обновляется, как только я отправляю сообщение.

Логика сервера выглядит следующим образом

  // Chat namespace
  io.of('/chat').on('connection', (socket) => {
    console.log('Socket connected on server');
    socket.on('new-message', (message) => {
      console.log('Received new message ' + message);
      io.emit("ChatMessage", message);
    });
  });

На стороне клиента я создал собственный класс ChatSocket, который предоставляется в файле app.module

@Injectable()
export class ChatSocket extends Socket {

  constructor() {
    super({ url: 'http://localhost:3000/chat', options: {} });
  }
}

Вкл. на стороне клиента я использую создание Observable в моем классе ChatService, который прослушивает событие "ChatMessage" с сервера.

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


  private chatMessages: ChatMessage[] = [];
  private users: User[] = [];
  private userLoggedListener = new Subject<User[]>();
  private chatUpdated = new Subject<ChatMessage[]>();
  **newMessage = this.socket.fromEvent<ChatMessage>('ChatMessage')**;

  constructor(private http: HttpClient, private  router: Router, public socket: ChatSocket) { }
  ....

Это наблюдаемое "newMessage" затем подписывалось в моем chatFeed и работало нормально, пока я не использовал пространство имен / chat в своем сокете. Это код, где я подписываюсь на наблюдаемую

  ngOnInit() {
    this.chatService.getMessages();

    this.runningChatSub = this.chatService.newMessage.subscribe((newMsg) => {
      console.log('IS IN SUBSCRIPTION ! ');
      this.feed.push(newMsg);
    });
  }

Теперь кажется, что Сервер просто не достигает наблюдаемого "newMessage" на моем Клиенте. Я создал несколько console.logs и увидел, что сообщение отправляется на сервер, но не возвращается клиентам?

У кого-нибудь есть предложения?

Заранее спасибо.

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