无法获取在子域上运行的WebSocket服务器(Plesk、Linux、NodeJs、Express)

uqjltbpv  于 2023-04-29  发布在  Linux
关注(0)|答案(1)|浏览(132)

我自己开发了一个小WebSocket服务器,它工作得很好(本地-在我的IDE上)。问题是,我想将它托管在我创建的特定子域下的由Plesk管理的服务器上: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);
});

我还实现了一个日志记录器,它可以记录到一个文件,这个文件也很好用(直接在start e.我的启动消息),但在我的服务器上的logs文件夹内是一个打哈欠的空虚。
我真的无法让我的WebSocket服务器在我的服务器上运行。为了不放过任何机会,我从nginx连接了disabled the proxy mode,但在尝试连接到wss://ws.my-url.de后,我得到了这个错误:

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

所以我可以说我的服务器没有启动。为了确定(并排除其他事情),我写了一个在互联网上找到的小http服务器,在按下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);

这是我的配置:

当我在尝试启动WebSocket服务器后打开URL时,我收到以下错误:

我做错了什么?我不想一个页面,我可以打开,我只是想让这个运行作为一个小服务,这是通过我的子域访问。我对此感到非常震惊,并感谢每一个可以帮助我的人。

omjgkv6w

omjgkv6w1#

您必须将应用程序模式从生产模式更改为开发模式,才能看到错误消息背后的真实的问题,因为应用程序甚至没有运行,它可能是像没有安装npm这样简单的事情。
此外,如果apache代理被禁用,websockets只能在Plesk上工作,所以你应该只使用ngnix。
把它们放在子域上没有问题,我已经在AWS lightsail上运行的Plesk上做过多次。Ex.www.example. www.example.com

相关问题