nestjs - 如何在 Nestjs 的 rest post 方法中将发布的数据发送给客户端?
问题描述
我是 Nestjs 的新手。我正在尝试在 Nestjs 中以 rest post 方法将发布的数据发送给客户端。我试图应用这种模式。它说 SocketService
在任何地方使用。当我尝试使用FeedBackController
得到“属性'服务器'不存在类型'SocketService'”错误时。那是因为server=null
在 SocketService
. 我不知道如何SocketService
在任何地方使用。你能帮忙吗?
//socket.module
import { Module, Global } from '@nestjs/common';
import { SocketService } from './socket.service';
@Global()
@Module({
controllers: [],
providers: [SocketService],
exports: [SocketService],
})
export class SocketModule {}
//socket.service
import { Injectable } from '@nestjs/common';
import { Server } from 'socket.io';
@Injectable()
export class SocketService {
public socket: Server = null;
}
//appGateway
import { Logger } from '@nestjs/common';
import {
OnGatewayInit,
SubscribeMessage,
WebSocketGateway,
OnGatewayConnection,
OnGatewayDisconnect,
WebSocketServer,
} from '@nestjs/websockets';
import { Server, Socket } from 'socket.io';
import { SocketService } from './socket/socket.service';
@WebSocketGateway()
export class AppGateway
implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
constructor(private socketService: SocketService) {}
@WebSocketServer() public server: Server;
private logger: Logger = new Logger('AppGateway');
afterInit(server: Server) {
this.socketService.socket = server;
console.log('socket', server);
}
handleDisconnect(client: Socket) {
this.logger.log(`Client disconnected: ${client.id}`);
}
handleConnection(client: Socket, ...args: any[]) {
this.logger.log(`Client connected: ${client.id}`);
}
}
//app.module
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { FeedBackModule } from './FeedBack/feedback.module';
import { AppGateway } from './app.gateway';
import { SocketModule } from './socket/socket.module';
@Module({
imports: [FeedBackModule, SocketModule],
controllers: [AppController],
providers: [AppService, AppGateway],
})
export class AppModule {}
//app.service
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
//feedback.controller
import { Controller, Post, Body, Get, Logger } from '@nestjs/common';
import { FeedBackService } from './feedback.service';
import { AppGateway } from '../app.gateway';
import { SocketService } from '../socket/socket.service';
@Controller()
export class FeedBackController {
// private logger: Logger = new Logger('GateWay');
constructor(
private readonly feedBackService: FeedBackService,
private readonly socketService: SocketService,
) {}
@Post('/save')
add(@Body('issue') issue, @Body('comment') comment) {
const id = this.feedBackService.insertProblem(issue, comment);
//error in here that is because SocketService does not have server
this.socketService.server.emit('receive-postedFeedback', {
message: 'muzaffer',
});
// this.logger.log('issue', issue);
// this.logger.log('comment', comment);
console.log({ issue, comment });
return { id };
}
@Get('/getlist')
get() {
return this.feedBackService.getProblems();
}
}
解决方案
推荐阅读
- java - 如何在 PostgreSQL 中检索两个日期之间的行?
- html - 未捕获的 SecurityError:iFrame 上的 DOMException(代码 18)
- google-chrome-extension - Chrome 未在扩展程序上添加我的自定义 search_provider
- cloud-foundry - Cloud Foundry 中的度量注册器
- python - 匹配两个数据框中的某些列以获得相似度分数
- google-cloud-platform - 谷歌 GCP 云运行 redis 客户端失去与实例的连接
- numpy - 如何获取张量中的特定元素(pytorch)
- javascript - 如何使用省略号在 JSX 中显示最后 6 个字符?
- html - 如何增加一个人的高度与行中的其他人对齐?
- asp.net - 使用会话变量查询 SQL Server