首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nestJS "socket.io-redis":"6.0.1“

nestJS "socket.io-redis":"6.0.1“
EN

Stack Overflow用户
提问于 2020-12-03 21:24:25
回答 1查看 2.1K关注 0票数 1

根据文档 TypeScript // npm i -D @type/redis

代码语言:javascript
复制
import { Server } from 'socket.io';
import { createAdapter } from 'socket.io-redis';
import { RedisClient } from 'redis';

const io = new Server(8080);
const pubClient = new RedisClient({ host: 'localhost', port: 6379 });
const subClient = pubClient.duplicate();

io.adapter(createAdapter({ pubClient, subClient }));

我创建了redis适配器

代码语言:javascript
复制
import { IoAdapter } from '@nestjs/platform-socket.io';
import { createAdapter } from 'socket.io-redis';
import { RedisClient } from 'redis';

export class RedisIoAdapter extends IoAdapter {
  createIOServer(port: number, options?: any): any {
    const server = super.createIOServer(port, options);
    const pubClient = new RedisClient({ host: 'localhost', port: 6379 });
    const subClient = pubClient.duplicate();
    server.adapter(createAdapter({ pubClient, subClient }));
    return server;
  }
}

在我使用分派this.appGateway.server.emit('test',‘hello’)之后;

代码语言:javascript
复制
TypeError: callback is not a function
    at Encoder.encode (/home/test/node_modules/socket.io-parser/index.js:135:5)
    at RedisAdapter.broadcast (/home/test/node_modules/socket.io-redis/node_modules/socket.io-adapter/dist/index.js:102:45)
    at RedisAdapter.broadcast (/home/test/node_modules/socket.io-redis/dist/index.js:267:15)
    at Namespace.emit (/home/test/node_modules/socket.io/lib/namespace.js:234:16)
    at Server.<computed> [as emit] (/home/test/node_modules/socket.io/lib/index.js:505:29)

my gateWay

代码语言:javascript
复制
import { OnGatewayConnection,  WebSocketGateway, WebSocketServer } from '@nestjs/websockets';
import { Logger } from '@nestjs/common';

@WebSocketGateway()
export class AppGateway implements OnGatewayConnection {
  private readonly logger = new Logger(AppGateway.name);

  @WebSocketServer()
  server;
  
  handleConnection(client): any {
    this.logger.log('new user connected...');
    client.emit('connection', 'Succesfuly connected');
  }

}

帮助--请解决问题

EN

回答 1

Stack Overflow用户

发布于 2020-12-03 22:43:43

socket.io-redis ^6使用Nest尚未支持的socket.io版本3。关于它有一个悬而未决的问题,这里,它已经为Nest v8做好了准备

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65134378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档