我自己开发了一个小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时,我收到以下错误:
我做错了什么?我不想一个页面,我可以打开,我只是想让这个运行作为一个小服务,这是通过我的子域访问。我对此感到非常震惊,并感谢每一个可以帮助我的人。
1条答案
按热度按时间omjgkv6w1#
您必须将应用程序模式从生产模式更改为开发模式,才能看到错误消息背后的真实的问题,因为应用程序甚至没有运行,它可能是像没有安装npm这样简单的事情。
此外,如果apache代理被禁用,websockets只能在Plesk上工作,所以你应该只使用ngnix。
把它们放在子域上没有问题,我已经在AWS lightsail上运行的Plesk上做过多次。Ex.www.example. www.example.com