Сокет.двойное соединение ввода-вывода только с одним клиентом

#node.js #express #sockets #socket.io

#node.js #экспресс #сокеты #socket.io

Вопрос:

Я пишу это серверное приложение (экспресс и socket.io ), только в самом начале. Я вижу двойной журнал, поэтому у меня двойное подключение к серверу при запуске вкладки на localhost: 8080. Что я делаю не так? Это сокет.ошибка ввода-вывода?

 const express = require("express");
const path = require("path");
const socket = require("socket.io");
const port = process.env.PORT || 8080;
const app = express();
const server = app.listen(port);

app.use(express.static(__dirname   "/dist"));

app.get("/", (req, res) => {
  res.sendFile(path.resolve(__dirname   "/dist", "index.html"));
});

// Socket setup
const io = socket(server);

io.on("connect", function (socket) {
  console.log("Made socket connection");
});
  

Комментарии:

1. Выглядит нормально. Как выглядит код клиента?

2. К вашему сведению, express.static() уже реализовано то, что вы app.get() делаете, так что этот маршрут немного избыточен.

Ответ №1:

Проблема заключалась в том, что больше клиентских файлов js вызывали socket() . Правильный метод — импортировать сокет.библиотека ввода-вывода в, в ваш HTML-файл, так что это будет доступно для всех клиентских файлов js, реализуя только одно соединение.