#html #css #node.js #express #socket.io
#HTML #CSS #node.js #экспресс #socket.io
Вопрос:
Я использую сокет.ввод-вывод для отображения сообщения, но когда я запускаю узел server.js он не регистрирует в консоли ни одно выходное сообщение. Я прикрепил свой chat.html, server.js и main.js файл, чтобы показать сокет.код ввода-вывода.
chat.html
lt;script src="http://localhost:54159/socket.io/socket.io.js"gt;lt;/scriptgt; lt;script src="js/main.js"gt;lt;/scriptgt;
server.js
const http = require('http'); const express = require('express'); const socketio = require('socket.io'); const app = express(); const server = http.createServer(app); const io = socketio(server); app.use(express.static(path.join(__dirname, 'public'))); io.on('connection', (socket) =gt; { console.log('New web socket connection...'); socket.emit('message', 'Welcome to Chat Room!'); }); const PORT = 54159 || process.env.PORT; server.listen(PORT, () =gt; console.log(`Server running on port ${PORT}`));
main.js const socket = io();
Комментарии:
1. Вы проверили консоль разработчика браузера, чтобы узнать, есть ли ошибки в скрипте или ошибки загрузки на вашей веб-странице? Вполне вероятно, что один из ваших сценариев неправильно загружается на веб-странице и, следовательно, нет сокета. подключение ввода-вывода.
2. Я в замешательстве, как это сделать. Я определил порт 58228 в Google Chrome, но в скобках, где я выполняю код, указано, что локальный хост-8123. Кроме того, когда я загружаю его, он иногда переключает порты, поэтому я немного не понимаю, как это исправить.
3. Я добавил изображение ошибок, которые я получаю. Я в таком замешательстве, пожалуйста, помогите!
4. Ну, клиент ДОЛЖЕН знать, на каком порту вы работаете. Невозможно установить соединение с вашим сервером, если он не знает порт.
5. Похоже, что
54159
это неправильный порт для вашего сервера, и это то, что вы используете здесь:lt;script src="http://localhost:54159/socket.io/socket.io.js"gt;lt;/scriptgt;
so socket. ввод-вывод не загружается должным образом. Какой URL-адрес вы используете для загрузки веб-страницы в браузере? Похоже, в нем есть правильный порт, потому чтоmain.js
кажется, что он работает.
Ответ №1:
Хорошо, я думаю, что обобщу рекомендуемые изменения нашего обмена в комментариях:
Измените это:
lt;script src="http://localhost:54159/socket.io/socket.io.js"gt;lt;/scriptgt;
к этому:
lt;script src="/socket.io/socket.io.js"gt;lt;/scriptgt;
Это избавляет вас от необходимости указывать порт (который в любом случае был неверным).
Изменить:
/public/chat.html
Для:
/chat.html
чтобы это совпадало с тем, куда смотрит ваша express.static()
линия. Для /public/chat.html
работы chat.html
он должен быть расположен public/public/chat.html
на жестком диске вашего сервера, но я предполагаю, что это не так, и, скорее всего, он там public/chat.html
. Ваша express.static()
линия указывает на public
вершину дерева, на которое она смотрит. Любые другие пути в URL-адресе относятся к этому.
И каждый раз, когда вы вносите изменения в код клиента или сервера, убедитесь, что ваш сервер перезапущен, чтобы убедиться, что все последние изменения используются.
Если вы совсем не уверены в том, на каком порту работает ваш сервер, посмотрите на результаты этого, когда ваш сервер запустится:
console.log(`Server running on port ${PORT}`)
Это подскажет вам, на каком порту он работает. Ссылка в журнале скобок на порт, вероятно, связана с отладчиком nodejs, который будет находиться на другом порту от вашего веб-сервера.