【发布时间】:2021-07-22 22:28:29
【问题描述】:
我正在尝试使用nestjs 创建聊天,它的@SubscribeMessage() 有问题,
使用连接的实现正在工作,但是当我尝试监听来自前端的发射和consolenestjs 中的数据时,它不起作用
import { Server, Socket } from 'socket.io';
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from '../entities/user.entity';
import { Repository } from 'typeorm';
import { Messenger } from './entities/messenger.entity';
@Injectable()
@WebSocketGateway(5000)
export class MessengerGateway implements OnGatewayConnection, OnGatewayDisconnect, OnGatewayInit {
constructor(
@InjectRepository(User)
private userRepository: Repository<User>,
@InjectRepository(Messenger)
private messageRepository: Repository<Messenger>,
) {}
@SubscribeMessage('loadPeople')
handleEvent(client: Socket, data){
console.log(data);
// this is not working
}
async afterInit(server: Server) {
console.log('Init');
}
@SubscribeMessage('is-online')
async handleConnection(client: Socket) {
console.log('connected');
// I can see this message in console
}
@SubscribeMessage('is-offline')
async handleDisconnect(client: Socket) {
console.log('disconnected');
// I can see this message in console
}
}
我从前端发送这个请求
import { io } from "socket.io-client";
const ENDPOINT = "localhost:5000";
let socket
function App(){
useEffect(()=>{
socket = io(ENDPOINT)
socket.emit('loadPeople', {token: localStorage.token})
},[])
return (
//...
)
}
当我将 nodejs(expressjs) 与 socket.io 一起使用时,它可以工作, 但是当我尝试使用nestjs 执行此操作时,它不起作用
【问题讨论】:
-
当你说你可以看到
connected和disconnected时,是不是意味着你会立即看到一个接一个? -
@Eranga Heshan,是的,我的意思是
-
你的前端
socket.io-client是什么版本? -
@Eranga Heshan,我添加了连接和断开屏幕的问题,我的socket版本是4.0.1
标签: reactjs websocket socket.io nestjs nestjs-gateways