#node.js #express #socket.io
Вопрос:
Я тестирую nodejs с помощью express и socket.io. Я попытался воспроизвести сокет.приложение для демонстрационного чата io с некоторыми настройками для изучения. Я работаю над этим на GoDaddy после выполнения некоторых руководств по запуску узла на общем хостинге.
Вот мой app.js файл, очень простой.
const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
const port = process.env.PORT || 3000;
app.use(express.static(__dirname '/public'));
app.get('/', (req, res) => {
res.sendFile(__dirname '/index.html');
});
io.on('connection', (socket) => {
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
});
socket.on('typing', (data) => {
socket.broadcast.emit('typing', data);
});
socket.on('typing_clear', (data) => {
socket.broadcast.emit('typing_clear', data);
});
});
http.listen(port, () => {
console.log(`Socket.IO server running at http://localhost:${port}/`);
});
Я использую SSH (в терминале VS Code), чтобы попасть на сервер GoDaddy, перейдите к app.js файл и узел do app.js. Я перехожу на URL-адрес (поддомен https, если это имеет значение), и он показывает мне ожидаемую консоль.log (..), отлично.
В консоли браузера я получаю это сообщение, я не могу понять это:
websocket.js:87 WebSocket connection to 'wss://node.domain.com/socket.io/?EIO=4amp;transport=websocketamp;sid=KIBBM4ns8yQ09rWFAAAA' failed:
Я продолжаю тестировать, на странице отображается ожидаемое содержимое. Я тестирую его, и он работает. Затем я продолжаю тестировать отправку различных сообщений чата из разных окон браузера, и я продолжаю получать следующие сообщения, и он выходит из строя/перестает работать:
polling-xhr.js:198 GET https://node.domain.com/socket.io/?EIO=4amp;transport=pollingamp;t=Nby2zZNamp;sid=KIBBM4ns8yQ09rWFAAAA net::ERR_CONNECTION_CLOSED
polling-xhr.js:198 POST https://node.domain.com/socket.io/?EIO=4amp;transport=pollingamp;t=Nby2zaWamp;sid=KIBBM4ns8yQ09rWFAAAA net::ERR_CONNECTION_CLOSED
polling-xhr.js:198 POST https://node.domain.com/socket.io/?EIO=4amp;transport=pollingamp;t=Nby2zcIamp;sid=KIBBM4ns8yQ09rWFAAAA net::ERR_CONNECTION_RESET
polling-xhr.js:198 GET https://node.domain.com/socket.io/?EIO=4amp;transport=pollingamp;t=Nby2zrL net::ERR_CONNECTION_CLOSED
Есть какие-нибудь идеи о том, что происходит? Годадди что-то делает? Не перепутан ли код? Я немного сбит с толку, так как могу отправить случайное количество тестовых сообщений в чате, а затем получить их. Я могу остановить и перезапустить сервер узлов, и он будет работать нормально, пока не сделает это снова… Я попытался переписать код подключения и другие материалы среди других исследований.
Спасибо.
Комментарии:
1. Поэтому главный ответ-не используйте GoDaddy для этого, они не поддерживают этот тип вещей на общем хостинге. Хероку отлично работает.