#javascript #node.js #express #server #socket.io
Вопрос:
Я борюсь с этим и пару последних дней пытался понять, как это сделать. Я потерпел неудачу, и именно поэтому я пишу это. Я видел вопросы от переполнения стека и других сайтов, но эти ответы не сработали для меня.
Я следил за этим «Начать работу» из сокета.ИО https://socket.io/get-started/chat Все работало нормально на локальных серверах, пока я не развернул его на сервере. Когда я пытаюсь войти в консоль сайта, меня регистрируют.
ПОЛУЧИТЬ http://8byte.pl/socket.io/socket.io.js сеть::ОШИБКА 404 (Не найдена)»
Ошибка неперехваченной ссылки: ввод-вывод не определен в приложении.js:3
Я знаю, почему появляется второй, но совершенно не понимаю, почему он не может найти socket.io.js файл, когда он смог найти его на локальном сервере.
Я пытался создать уникальный GET для этого, но это все еще не работало.
Приложение размещено на hitme.pl. Они используют CloudLinux, и у него есть опция настройки Node.js Приложение в прямом администрировании. Может быть, эта информация поможет.
Адрес приложения: 8byte.pl/chat
server.js
const express = require("express");
const path = require("path");
const app = express();
const http = require("http").createServer(app);
const io = require("socket.io")(http, { cors: { origin: "*" } });
const morgan = require("morgan");
app.use(morgan("tiny"));
app.use(express.static(__dirname "/public"));
app.get("/chat", (req, res) => {
res.sendFile(path.join(__dirname "/public", "index.html"));
});
io.on("connection", (socket) => {
console.log("a user connected");
socket.broadcast.emit("new user connection");
socket.on("disconnect", () => {
socket.broadcast.emit("user disconnection");
});
socket.on("chat message", (msg) => {
socket.broadcast.emit("new message", msg);
});
});
http.listen(3000, () => "Server started");
дно index.html
<script src="/socket.io/socket.io.js"></script>
<script src="app.js"></script>
начало app.js
const socket = io();
Комментарии:
1. Почему отображается сообщение об ошибке
http://8byte.pl/socket.io/socket.io.js
(это порт 80), но ваш сервер работает на порту 3000?2.
<script src="/socket.io/socket.io.js"></script>
Для этой строки, пожалуйста, попробуйте указать полный URL-адрес socket.io. Что-то похожее<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
или похожее на URL CDN.