Skip to content

Not able to connect to redis server on multiple node setup #5

@devashish-gopalani-cognoai

Description

Hey @darrachequesne. I have got 2 servers. Both of the servers are running socket-io's server installation on port 3000. On one of those servers (say server number 2), I have installed redis and it is running on port 6379.

As per the documentation provided, on server 2 I have connected to redis with the following code:

const { Server } = require("socket.io");
const { createCustomLogger } = require("./utils/logger");
const logger = createCustomLogger();

import { createClient } from "redis";
import { createAdapter } from "@socket.io/redis-streams-adapter";

const redisClient = createClient({ host: "localhost", port: 6379 });

try {
  redisClient.connect();
} catch (error) {
  logger.error(`Could not connect to redis client = ${error}`);
}

const io = new Server(3000, {
  adapter: createAdapter(redisClient),
  cors: {
    origin: ["https://admin.socket.io"],
    credentials: true
  },
  serveClient: false,
});

So the connection on server 2 is working fine. When I use the similar code to connect to redis from server 1 I am getting an issue. Here is the code which I have written:

const { Server } = require("socket.io");
const { createCustomLogger } = require("./utils/logger");
const logger = createCustomLogger();

import { createClient } from "redis";
import { createAdapter } from "@socket.io/redis-streams-adapter";

const redisClient = createClient({ host: "<private_ip_of_server_2>", port: 6379 });

try {
  redisClient.connect();
} catch (error) {
  logger.error(`Could not connect to redis client = ${error}`);
}

const io = new Server(3000, {
  adapter: createAdapter(redisClient),
  cors: {
    origin: ["https://admin.socket.io"],
    credentials: true
  },
  serveClient: false,
});

The error which is getting printed is -

2023-05-17T10:58:32.306Z [ERROR]: unhandledRejection: connect ECONNREFUSED 127.0.0.1:6379
Error: connect ECONNREFUSED 127.0.0.1:6379
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16)

My question is

  1. If I have entered the private IP of the server on which redis is running then why is the error displayed showing 127.0.0.1 as the IP address? Shouldn't the private IP get printed?
  2. How can I fix this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions