服务器在子域(Plesk、Linux、NodeJs、Express)上运行"/>
无法让 WebSocket 服务器在子域(Plesk、Linux、NodeJs、Express)上运行
我自己开发了一个完美运行的小型 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);
});
我还实现了一个记录器,该记录器可以注销到一个文件,该文件也很好用(直接在启动时,例如我的启动消息),但在我服务器上的
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 服务器,它在按下
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 时,出现此错误:
那么我在这里做错了什么?我不想要一个我可以打开的页面,我只想让它作为一个可以通过我的子域访问的小服务运行。我对此感到非常不知所措,并感谢每个可以帮助我的人。
回答如下:您必须将应用程序模式从生产模式更改为开发模式,才能看到该错误消息背后的真正问题,因为该应用程序甚至没有运行,它可能就像没有安装 npm 一样简单。
如果禁用了 apache 代理,websockets 也只能在 Plesk 上工作,所以你应该只使用 ngnix。
将它们放在子域上没有问题,我已经在运行 aws lightsail 的 Plesk 上多次完成了。前任。 Api.domain
更多推荐
无法让 WebSocket 服务器在子域(Plesk、Linux、NodeJs、Express)上运行
发布评论