NodeJS 如何使用nestjs和www.example.com创建文件室socket.io

yvgpqqbh  于 2023-02-15  发布在  Node.js
关注(0)|答案(3)|浏览(179)

我尝试在我的nestjs后台创建一个房间,但是找不到任何关于这个主题的信息。你可以找到文档here。文档中似乎没有关于这个主题的任何内容。

import {
  SubscribeMessage,
  WebSocketGateway,
  WebSocketServer,
  WsResponse,
} from '@nestjs/websockets';
import { Client, Server } from 'socket.io';

@WebSocketGateway({namespace: 'story'})
export class StoryEventsGateway {
  @WebSocketServer()
  server: Server;

  @SubscribeMessage('createRoom')
  createRoom(client: Client, data: string): WsResponse<unknown> {
    return { event: 'roomCreated', data };
  }
}
6kkfgxo0

6kkfgxo01#

通过将client: Client更改为socket: Socket,您可以使用在使用socket.io时所使用的套接字对象。
下面是编辑后的函数。

import { Socket } from 'socket.io';
import { WsResponse } from '@nestjs/websockets';

createRoom(socket: Socket, data: string): WsResponse<unknown> {
  socket.join('aRoom');
  socket.to('aRoom').emit('roomCreated', {room: 'aRoom'});
  return { event: 'roomCreated', room: 'aRoom' };
}
kcugc4gi

kcugc4gi2#

在最新的Nest JS更新中,您可以使用以下代码从前端发送房间名称,并将其传递到'data'变量:

@SubscribeMessage('createRoom')
  createRoom(@MessageBody() data: string, @ConnectedSocket() client: Socket) {
    client.join(data, err => {
      if (err) {
        this.logger.error(err);
      }
    });
  }
oyxsuwqo

oyxsuwqo3#

我遇到的问题是来自错误的进口。

import { Socket } from 'socket.io-client' //wrong

import { Socket } from 'socket.io' //good

@SubscribeMessage('room')
joinRoom(socket: Socket, roomId: string) {
  socket.join(roomId);
}

相关问题