2

我在 cloudways 有一个托管服务器。我正在尝试使用 socket.io。

客户端.php:

var socket = io('http://localhost:3000');
console.log(socket);

server.js:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(3000);

io.on('connection', function(socket){
console.log('is connected');
});

访问该页面时,我在控制台的网络部分看到两个 200 OK 的实例。浏览器中的控制台还会打印套接字变量,它具有“已连接:true”。

但是,我在终端(来自 server.js)中看不到“已连接”,它只是空白。

该站点已在本地运行,但是在尝试使其在 Cloudways 上运行时出现了这些问题。

有任何想法吗?

我尝试将“localhost”切换为域名和 IP 地址,并且尝试了不同的端口,但 3000 是唯一可以让我启动 server.js 而不会出错的端口。

在此处输入图像描述

编辑

Cloudways 已确认应使用端口 3000。

我尝试将 io() 中的 url 更改为:

var socket = io('http://my-cloudways-url:3000'); (net::ERR_EMPTY_RESPONSE)
var socket = io('http://www.my-domain.club:3000'); (net::ERR_EMPTY_RESPONSE)
var socket = io('http://ip-adr:3000'); (net::ERR_EMPTY_RESPONSE)

今天我得到

var socket = io('http://localhost:3000'); (net::ERR_CONNECTION_REFUSED)

我也尝试过 io.connect(使用相同的地址/端口)。

4

1 回答 1

0

也许是您的 php 索引...因为您正在设置本地主机和端口。

我不确定 Cloudway 是如何工作的。但是,当我们运行 server.js 时,一些云会提供一些 url 来访问我们的项目......

在您的 cloudways 中,尝试使用他们提供给您的官方 URL 访问该项目:

var socket = io.connect('url.from.cloudway');

例如,我使用的是 cloud9,当我执行 server.js 时,返回一个 url,如:

Your code is running: https://demo-some-id.c9.io

当我使用 socket.io 时,我需要在我的索引中设置 IO 内的 URL 参数。

var socket = io('https://demo-some-id.c9.io');

您需要添加客户端 socket.io.js版本并添加带有路径的脚本标记,例如:

<script src="js/socket.io.js"></script>

Obs.:有些云,你需要在你的<script>标签中设置url

<script src="https://demo-some-id.c9.io/socket.io/socket.io.js"></script>
于 2017-08-09T19:31:36.513 回答