import { createAdapter } from "@socket.io/redis-adapter";
import { createAdapter as createClusterAdapter } from "@socket.io/cluster-adapter";
import { setupWorker } from "@socket.io/sticky";
const app = express();
export const server = http.createServer(app);
export const io = new Server(server, {
transports: ['websocket', 'polling'],
adapter: createAdapter(redisClient, redisSubClient)
});
io.adapter(createClusterAdapter()); // src/server.ts:76:4
setupWorker(io);
< /code>
Пока я пытаюсь запустить свой код, он показывает эту ошибку < /p>
TypeError: Cannot read properties of undefined (reading 'id')
at new ClusterAdapter (/home/michioxd/backend/node_modules/.pnpm/@socket.io+cluster-adapter@0.2.2_socket.io-adapter@2.5.5/node_modules/@socket.io/cluster-adapter/dist/index.js:61:34)
at new (/home/michioxd/backend/node_modules/.pnpm/@socket.io+cluster-adapter@0.2.2_socket.io-adapter@2.5.5/node_modules/@socket.io/cluster-adapter/dist/index.js:40:16)
at Namespace._initAdapter (/home/michioxd/backend/node_modules/.pnpm/socket.io@4.8.1/node_modules/socket.io/dist/namespace.js:99:24)
at Server.adapter (/home/michioxd/backend/node_modules/.pnpm/socket.io@4.8.1/node_modules/socket.io/dist/index.js:188:17)
at file:///home/michioxd/src/server.ts:76:4
at ModuleJob.run (node:internal/modules/esm/module_job:274:25)
at onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:644:26)
< /code>
Я запускаю сервер, используя PM2 со следующей командой: < /p>
pm2 start index.js -i max
< /code>
Почему возникает эта ошибка? Я использую CreateAdapter ()
неправильно? Как мне правильно настроить Socket.io с поддержкой кластера и PM2?
Я пытаюсь настроить socket.io с поддержкой кластера с использованием PM2, следуя этим документам.[code]import { createAdapter } from "@socket.io/redis-adapter"; import { createAdapter as createClusterAdapter } from "@socket.io/cluster-adapter"; import { setupWorker } from "@socket.io/sticky";
io.adapter(createClusterAdapter()); // src/server.ts:76:4 setupWorker(io); < /code> Пока я пытаюсь запустить свой код, он показывает эту ошибку < /p> TypeError: Cannot read properties of undefined (reading 'id') at new ClusterAdapter (/home/michioxd/backend/node_modules/.pnpm/@socket.io+cluster-adapter@0.2.2_socket.io-adapter@2.5.5/node_modules/@socket.io/cluster-adapter/dist/index.js:61:34) at new (/home/michioxd/backend/node_modules/.pnpm/@socket.io+cluster-adapter@0.2.2_socket.io-adapter@2.5.5/node_modules/@socket.io/cluster-adapter/dist/index.js:40:16) at Namespace._initAdapter (/home/michioxd/backend/node_modules/.pnpm/socket.io@4.8.1/node_modules/socket.io/dist/namespace.js:99:24) at Server.adapter (/home/michioxd/backend/node_modules/.pnpm/socket.io@4.8.1/node_modules/socket.io/dist/index.js:188:17) at file:///home/michioxd/src/server.ts:76:4 at ModuleJob.run (node:internal/modules/esm/module_job:274:25) at onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:644:26) < /code> Я запускаю сервер, используя PM2 со следующей командой: < /p> pm2 start index.js -i max < /code> Почему возникает эта ошибка? Я использую CreateAdapter () [/code] неправильно? Как мне правильно настроить Socket.io с поддержкой кластера и PM2?