redis - 嵌套JS“socket.io-redis”:“6.0.1”
问题描述
根据文档 TypeScript // npm i -D @types/redis
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适配器
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;
}
}
在我使用 dispatch this.appGateway.server.emit('test', 'hello');
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)
我的网关
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');
}
}
帮助请解决问题
解决方案
socket.io-redis
^6 使用 Nest 尚不支持的 socket.io 版本 3。这里有一个未解决的问题,它已准备好用于 Nest v8
推荐阅读
- sql-server - 如何根据某些列值从 SQL Server 表中查找重复条目?
- sql - 如何将 SQL Server 几何数据插入到 postgis 几何数据类型列
- javascript - 如何在 JavaScript 中显示具有带空格参数的 JSON 中的数据
- flutter - 错误:没有为“问题”类定义吸气剂“长度”
- flutter - 在 integration_test 迁移后无法通过初始屏幕
- php - 手动输入完整网址时网站不安全?
- python - 如何对 dataframe.rolling.sum() 生成的每个索引中的每个值表求和
- javascript - 在显示 javascript 的输出时遇到一些问题
- python - Tkinter gui 不起作用鼠标和键盘模块
- c++ - 测量操作块的时间