gpt4 book ai didi

node.js - 通过nodejs在共享cpanel主机上实现websocket服务器

转载 作者:行者123 更新时间:2023-12-01 04:23:57 25 4
gpt4 key购买 nike

我已经获得了一个带有支持 nodejs 的 cpanel 的共享主机。我可以通过“设置 Node.js 应用程序”定义一个 node.js 应用程序。

我想做一个websocket。他们为我打开了 2088 端口。

这是我的 websocket 服务器代码:

const http = require('http');
const WebSocket = require('ws');

const server = http.createServer();
const wss = new WebSocket.Server({ server });

wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});

ws.send('something');
});

server.listen(2088);

好吧,我运行我的代码,然后将此请求从客户端发送到服务器:
socket = new WebSocket('ws://mydomain.com:2088');

socket.addEventListener('open', function (event) {
socket.send('Hello Server!');
});

socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});

但是,我不断收到超时错误,无法连接到 websocket 服务器。

似乎在能够监听特定端口的共享 cpanel 主机上创建 websocket 服务器与通常情况略有不同。

我浏览了互联网,我在 cpanel nodejs 上得到的只是如何使用 cpanel 菜单构建 node.js 应用程序。我找不到任何关于如何在共享 cpanel 主机上创建 websocket 的解释。所有消息来源都说可以使用 cpanel 上提供的 nodejs 制作 websocket。

现在,有没有人拥有一个具有 nodejs 功能的共享主机?并在其上运行 websocket?

把主机卖给我的管理员完全是白痴,对此一无所知,无法帮助我......

提前感谢您的帮助。

更新:

如何在共享主机中运行 Node.js 和 python 不同于在 vps 中运行它们的方式。根据我的发现, 乘用车 用于共享主机。我遇到的问题可以由使用 Nodejs 在共享主机上工作并了解 方式的人解决。乘用车 作品。

最佳答案

对于从 cPanel UI 部署的 Node 应用程序,cPanel 依赖于 Passenger 来管理部署。当发送 WebSockets 连接请求时,客户端通过请求中的 Connection header 发送 HTTP 请求进行“升级”。乘客响应标准 HTTP 请求,但不对 Connection header 做任何事情,因此 WebSockets 请求实际上被忽略了。如果您在浏览器中打开 JS 调试器并检查 WebSockets 目标资源,您实际上可以看到这种情况。

Phusion 在 GitHub 上发布了一个使用 的 WebSockets 演示。 socket.io .在演示的 README 中,它指出 WebSockets 在Passenger 内部无法正常工作,因此它转而使用 HTTP 长轮询作为后备。但是,此回退是 中设计的功能。 socket.io 为了使其正常工作,Passenger 必须配置为使用粘性 session ,这是一个当前未在 cPanel 中的 UI 中公开的选项。

如果您想使用 node 作为 WebSockets 服务器,您将需要在Passenger 之外运行它,因此很可能需要退出共享托管环境。可以在 cPanel 上运行它,但如果您的帐户没有提升的 shell 权限,则不能。

编辑:
你的问题真的让我很困扰,所以我又花了几个小时来解决这个问题。如果您真的想从 cPanel 运行 Node WebSockets 服务器,您可以通过使用 调用服务器应用程序来完成此操作。永远 从您在 cPanel 应用程序管理器中注册的父应用程序。父应用程序将从Passenger 执行,然后您的服务器应用程序将通过 在Passenger 外部执行永远 .乘客会提示使用 Node 集群模块,但它仍然可以工作。

确保您的父应用程序响应 HTTP 请求,因为您需要发送至少一个请求以在Passenger 中实例化它。

关于node.js - 通过nodejs在共享cpanel主机上实现websocket服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59598607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com