Advanced Node and Express - Send and Display Chat Messages

My code is able to pass all the test cases but there appears to be something weird. Every time I log in it appears as if I am logging in twice. It says that the user logs in twice in the server console, on the chat box, and in the client console. I’ve posted my code for client.js and server.js below.

Does anyone know how to stop the server from emitting the login action twice? I believe this is the issue but I am pretty sure I only have one listening instance…

server.js

"use strict";

const express = require("express");
const session = require("express-session");
const bodyParser = require("body-parser");
const fccTesting = require("./freeCodeCamp/fcctesting.js");
const auth = require("./app/auth.js");
const routes = require("./app/routes.js");
const mongo = require("mongodb").MongoClient;
const passport = require("passport");
const cookieParser = require("cookie-parser");
const app = express();
const http = require("http").Server(app);
const sessionStore = new session.MemoryStore();
const cors = require("cors");
const io = require("socket.io")(http);
const passportSocketIo = require("passport.socketio");

app.use(cors());

fccTesting(app); //For FCC testing purposes

app.use("/public", express.static(process.cwd() + "/public"));
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.set("view engine", "pug");

app.use(
  session({
    secret: process.env.SESSION_SECRET,
    resave: true,
    saveUninitialized: true,
    key: "express.sid",
    store: sessionStore
  })
);

mongo.connect(
  process.env.DATABASE,
  { useUnifiedTopology: true },
  (err, client) => {
    if (err) console.log("Database error: " + err);
    const db = client.db("advancednodeandexpress");
    // Input your database name above
    auth(app, db);
    routes(app, db);

    http.listen(process.env.PORT || 3000);

    //start socket.io code
    io.use(passportSocketIo.authorize({
      cookieParser: cookieParser,
      key:          'express.sid',
      secret:       process.env.SESSION_SECRET,
      store:        sessionStore,
      success: (data, accept) => {
        console.log('successful connection to socket.io');
        accept(null, true);
        accept();
      },
      fail: (data, message, error, accept) => {
        if(error) { throw new Error(message) };
        console.log('failed connection to socket.io:', message);
        accept(null, false);
        if(error) { accept(new Error(message)) };
      }
    }));

    var currentUsers = 0;
    io.on("connection", socket => {
      ++currentUsers;
      io.emit("user", {name: socket.request.user.name,currentUsers: currentUsers,connected: true});
      console.log("A user has connected");

      socket.on("disconnect", () => {
        --currentUsers;
        io.emit("user", {name: socket.request.user.name,currentUsers: currentUsers,connected: false});
        console.log("A user has disconnected");
      });
      
      socket.on('chat message', (data) => {
        io.emit('chat message', {name: socket.request.user.name, message: data})
      });
    });

    //end socket.io code
  }
);

client.js

$(document).ready(function() {
  /*global io*/
  var socket = io.connect("https://xdhsocketio.glitch.me/");

  socket.on('user count', function(data) {
    console.log(data);
  });
  
  socket.on("user", function(data) {
    console.log(data);
    $("#num-users").text(data.currentUsers + " users online");
    var message = data.name;
    if (data.connected) {
      message += " has joined the chat.";
    } else {
      message += " has left the chat.";
    }
    $("#messages").append($("<li>").html("<b>" + message + "</b>"));
  });
  
  socket.on('chat message', (data) => {
    $("#messages").append($("<li>").html("<b>" + data.name + ": " + data.message + "</b>"));
  });

  // Form submittion with new message in field with id 'm'
  $("form").submit(function() {
    var messageToSend = $("#m").val();
    //send message to server here?
    socket.emit('chat message', messageToSend);
    $("#m").val("");
    return false; // prevent form submit from refreshing page
  });
});