如何使用nodejs连接到实时服务器上的socket.io

问题描述 投票:1回答:1

将近一周的时间,我无法将自己的node.js应用程序置于在线状态。我有一个共享的主机,在其中创建了一个子域(比方说sub.domain.com),并且此子域指向一个Directoy /home/wproj/myapp,其中包含我的nodejs应用程序的代码。我使用SSH登录服务器并完全执行以下命令。

cd myapp
node index.js

现在,节点应用程序在端口3000上启动,但是我无法从浏览器访问其网页。因此我使用了一个.htaccess文件,其中包含以下代码。

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L]

现在我可以在http://sub.domain.com/看到该网页。但是问题是我的服务器正在发出一个套接字,但是客户端无法连接到该套接字。在本地服务器上,它运行正常,我似乎没有从我访问过的数百个问题中找到任何解决方案。在浏览器控制台中,它表示[]

Firefox can’t establish a connection to the server at ws://sub.domain.com/socket.io/?EIO=3&transport=websocket&sid=pItfylCcSBwvBrGaAAAZ.

我的客户端代码看起来像这样。

const socket = io.connect("http://sub.domain.com/");

我也尝试过这样输入端口号

const socket = io.connect("http://sub.domain.com:3000/");

也不起作用。还尝试将127.0.0.1:3000替换为http://sub.domain.com:3000,并且套接字仍未连接,并且始终返回404

很长的问题,我很抱歉,但是我不得不讲整个故事。如果有人可以帮助我或指出正确的方向,我将不胜感激。

谢谢。

将近一周的时间,我无法将自己的node.js应用程序置于在线状态。我有一个共享主机,在其中创建了一个子域(假设为sub.domain.com),并且该子域指向...

javascript node.js websocket socket.io
1个回答
0
投票

您需要打开端口3000进行入站和出站通信。由于它是共享主机,因此您需要先在管理面板(例如cPanel)上检查是否可以自己完成此操作,然后再向支持写票证。

© www.soinside.com 2019 - 2024. All rights reserved.