Не удается запустить сервер WebSocket на поддомене (Plesk, Linux, NodeJs, Express) - PullRequest
0 голосов
/ 04 апреля 2020

Я разработал небольшой WebSocket Server, который отлично работает (локально - в моей IDE). Проблема в том, что я хочу разместить его на своем сервере, управляемом с помощью Plesk, в указанном субдомене c, который я создал: ws.my-url.de.

Это мой server.js файл:

const {logInfo}       = require('./logger');
const WebSocketServer = require('ws').Server;
const express         = require('express');
const uuid            = require('node-uuid');

const app = express();
const wss = new WebSocketServer({
    server: app.listen(process.env.PORT || 8888)
});

logInfo('WebSocket Server successfully started');

wss.on('connection', ws => {
    ws.id = uuid.v4();

    logInfo(`Client connected: ${ws.id}`);

    ws.on('message', function () {
        logInfo(`New message from client: ${ws.id}`);
    });

    ws.on('close', function () {
        logInfo(`Client: ${ws.id} closed connection`);
    });
});

wss.on('close', function () {
    logInfo('WebSocket Server stopped');
});

app.post('/', function (req, res) {
    logInfo(req);
});

Я также реализовал регистратор, который выходит из файла, который также прекрасно работает (непосредственно при запуске, например, моё сообщение при запуске), но внутри папки logs на моем сервере зияющая пустота.

Я действительно не могу запустить сервер WebSocket на моем сервере. Чтобы не оставить камня на камне, я disabled the proxy mode из nginx, но после попытки подключения к wss://ws.my-url.de я получаю эту ошибку:

WebSocket connection to 'wss://ws.my-url.de/' failed: Error during WebSocket handshake: Unexpected response code: 500

Так что я могу сказать, что мой сервер не начиная. Чтобы быть действительно уверенным (и исключить другие вещи), я написал небольшой http-сервер, обнаруженный в inte rnet, и он запустился прямо из коробки после нажатия кнопки Restart App (я видел ответ в браузере окно):

const http = require('http');

http.createServer(function(request, response) {
  response.writeHead(200, {'Content-Type': 'text/html'});
  response.end('App is running…');
}).listen(process.env.PORT);

Кстати, это моя конфигурация:

enter image description here

Когда я открываю URL после попытки запуска мой сервер WebSocket, я получаю эту ошибку:

enter image description here

Так что я здесь не так делаю? Мне не нужна страница, которую я могу открыть, я просто хочу, чтобы она работала как небольшой сервис, доступный через мой поддомен. Я очень поражен этим и благодарен за каждого человека, который может мне помочь.

...