'socket.on() getting fired when there is no emit happening from the client

My socket.on() of "login_user" is getting fired automatiicaly from all sockets connected to the server when there is a emit("login_user") from a single specific socket.

io.on('connection', socketManage)

socketManage:

    console.log("=====================")
    console.log(moment().format('DD-MM-YYYY HH:mm:ss'), "Made socket connection", socket.id,);

    var res = await db.SocketsModel.create({
        socket_id: socket.id
    });


    io.emit("on_connect", socket.id);

    socket.on("login_user", async (user_id) => {
        console.log(chalk.green(moment().format('DD-MM-YYYY HH:mm:ss') ,  socket.id, "stepping into login_user", user_id));

        const exisSocket = await db.UserSocketsModel.findOne({
            where: {
                user_id: user_id,
                disconnected_on: null
            }
        });

        if (exisSocket) {
            console.log(chalk.red(moment().format('DD-MM-YYYY HH:mm:ss'),socket.id, "Non disconnected user socket found",user_id));

            await db.UserSocketsModel.update(
                {
                    disconnected_on: moment().format('YYYY-MM-DD HH:mm:ss'),
                },
                {
                    where: { id: exisSocket.id }
                });
            console.log(chalk.green(moment().format('DD-MM-YYYY HH:mm:ss'),socket.id, "Non disconnected user socket disconnected",user_id));

        }

        var res = await db.UserSocketsModel.create({
            socket_id: socket.id,
            user_id: user_id,
            connected_on: moment().format('YYYY-MM-DD HH:mm:ss')
        });

        console.log(chalk.green(moment().format('DD-MM-YYYY HH:mm:ss'),socket.id, "New User socket inserted",user_id));



        const userRooms = await db.UserRoomsModel.findAll({
            where: {
                user_id: user_id,
            },
            select: ['room_id']
        });

        if (userRooms && userRooms.length > 0) {
            let room_ids = [];

            console.log(chalk.green(moment().format('DD-MM-YYYY HH:mm:ss'),socket.id, userRooms.length + " User rooms found", user_id));

            userRooms.forEach(element => {
                room_ids.push(element.room_id)
            });

            socket.join(room_ids);
            console.log(chalk.green(moment().format('DD-MM-YYYY HH:mm:ss'),socket.id, "User Joined in all rooms", user_id));
        }

        else {
            console.log(chalk.red(moment().format('DD-MM-YYYY HH:mm:ss'),socket.id, "No User rooms found", user_id));
        }

    });

As you can see the logs :

17-03-2022 12:24:00 Made socket connection XS5hmzs2uPNJDTtHAAAB // From user 13

17-03-2022 12:24:01 XS5hmzs2uPNJDTtHAAAB stepping into login_user 13 // From user 13

17-03-2022 12:24:01 XS5hmzs2uPNJDTtHAAAB New User socket inserted 13 // From user 13

17-03-2022 12:24:01 XS5hmzs2uPNJDTtHAAAB No User rooms found 13 // From user 13

17-03-2022 12:24:13 Made socket connection jn-AWDo8HefLjwe3AAAD // This is from user 16

// Now user 13 is not triggering anything . But in server it gets fired automatically

17-03-2022 12:24:13 XS5hmzs2uPNJDTtHAAAB stepping into login_user 13

17-03-2022 12:24:13 XS5hmzs2uPNJDTtHAAAB Non disconnected user socket found 13

17-03-2022 12:24:13 XS5hmzs2uPNJDTtHAAAB Non disconnected user socket disconnected 13

17-03-2022 12:24:13 XS5hmzs2uPNJDTtHAAAB New User socket inserted 13

17-03-2022 12:24:13 XS5hmzs2uPNJDTtHAAAB No User rooms found 13

17-03-2022 12:24:13 jn-AWDo8HefLjwe3AAAD stepping into login_user 16 // From user 16

17-03-2022 12:24:13 jn-AWDo8HefLjwe3AAAD New User socket inserted 16 // From user 16

17-03-2022 12:24:13 jn-AWDo8HefLjwe3AAAD No User rooms found 16 // From user 16

As am very new to socket io, I am unable to figure this issue is in server or client side. My socket io client is mobile application written react native

Client side code :

socket.current = socketIOClient("http://192.168.1.**:****/", {
      transports: ["websocket"],
      forceNew: true,
      upgrade: false,
      reconnection: false,
      user_id: "",
    });

    if (appStateVisible == "active") {
      socket.current.connect();
      socket.current.on("connect", () => console.log("socket connected"));
      socket.current.on("on_connect", (socket_id) =>
        socket.current.emit("login_user", User_ID, () => {})
      );
    }


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source