Как реализовать чат-шлюз в Nestjs - PullRequest
0 голосов
/ 23 сентября 2019

Я импортировал все необходимые импорты для веб-сокетов для моего приложения, использующего связь TCP.Я хочу удалить чат с обеих сторон, как в WhatsApp, читать сообщения и т. Д., Т.е. все основные функции модуля чата для любого приложения, все нужные репозитории были введены, которые не упоминаются в коде.Код выполняется с использованием npm run start: dev без каких-либо ошибок.

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

Вот что я пытаюсь сделать:

  1. Отправлять сообщения пользователю, но событие сокета не отвечает .
  2. ТакжеЯ хочу сохранить чат в базе данных.

Объяснение: Я хочу реализовать API-интерфейс рабочего модуля чата для приложения, похожего на чат whats-app.для этого я хочу запросить информацию о пользователе, которую нужно сохранить в базе данных, теперь я создал свои функции для нее в файле службы чата, а также создал события в файле шлюза чата, но ** проблема в том, что я не могудля соединения с внешним интерфейсом **, когда событие запускается из внешнего интерфейса, оно не ведет себя должным образом, то есть событие вообще не указывает на мою функцию, что приводит к отсутствию ввода данных в базу данных.

РЕДАКТИРОВАТЬ: 1 Я внес некоторые изменения, и теперь он работает, как ожидалось.Позже я опубликую изменения.

Вот мой код:

import { SubscribeMessage, WebSocketGateway,OnGatewayInit, WsResponse, OnGatewayConnection, OnGatewayDisconnect, WebSocketServer} from '@nestjs/websockets';

import { Logger, Req } from '@nestjs/common';
import { Socket, Server } from 'socket.io';
import { ChatService }  from './chat.service';
import {CreateChatDto} from './dto';
import { Chats } from './entities/chat.entity';
import { ChatTos } from './entities/chat-to.entity';
import { Users } from '../user/entities/user.entity';
import { Repository, getRepository,Between, DeleteResult, UpdateResult, getConnection } from 'typeorm';
import { Events } from '../event/entities/event.entity';
import { Teams } from '../team/entities/team.entity';
import { UserService } from '../user/user.service';```

**Below  code is for websocket chat.**
    ```@WebSocketServer() wss: Server;
    private logger: Logger = new Logger('ChatGateway');
     wsClients=[];
     afterInit(server: Server) {
     console.log('Initialized!')
     this.logger.log('Initialized!');
  }

  handleDisconnect(client: Socket) {

        console.log("disconnected")
        this.logger.log(`Client disconnected: ${client.id}`);
      }



    handleConnection(client: any) {
        this.wsClients.push(client);
      }

  @SubscribeMessage('msgToServer')


    async handleMessage(@Req() request, client:Socket,dto: CreateChatDto) {

         // const {id,message,to_id,message_type,event_id,team_id } = dto;**commented code**
            const jwtData = await this.userService.jwtData(request.headers.authorization);
            const logged_id = jwtData.id; 
            this.chatService.sendMessage(logged_id, dto);
            console.log("savedChat")
            client.send('msgToServer', dto);
            return ({message:"Message sent"});
        } 

    @SubscribeMessage('readMessage')
    async readMessage(@Req() request, client:Socket,dto: CreateChatDto) {

    // const {id,message,to_id,message_type,event_id,team_id } = dto;
       const jwtData = await this.userService.jwtData(request.headers.authorization);
       const logged_id = jwtData.id; 
       this.chatService.readMessage(logged_id, dto);
       console.log("readChat")
       client.emit('readMessage', dto);
      return ({message:"Message read"});
    } 

    @SubscribeMessage('deleteMessage')
    async deleteMessage(@Req() request, client:Socket,dto: CreateChatDto) {

    // const {id,message,to_id,message_type,event_id,team_id } = dto;
       const jwtData = await this.userService.jwtData(request.headers.authorization);
       const logged_id = jwtData.id; 
       this.chatService.deleteMessage(logged_id, dto);
       console.log(" delete Chat")
       client.emit('deleteMessage', dto);
      return ({message:"Message deleted"});
    } 

}```

...