Я импортировал все необходимые импорты для веб-сокетов для моего приложения, использующего связь TCP.Я хочу удалить чат с обеих сторон, как в WhatsApp, читать сообщения и т. Д., Т.е. все основные функции модуля чата для любого приложения, все нужные репозитории были введены, которые не упоминаются в коде.Код выполняется с использованием npm run start: dev без каких-либо ошибок.
Я тестирую приведенный выше код с помощью контроллера чата через почтальона, и он успешно сохраняет нужные данные в базе данных, но при использовании реального времени в приложении событие не запускается.
Вот что я пытаюсь сделать:
- Отправлять сообщения пользователю, но событие сокета не отвечает .
- ТакжеЯ хочу сохранить чат в базе данных.
Объяснение: Я хочу реализовать 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"});
}
}```