Socket.io,服务器没有响应连接事件

时间:2017-08-09 18:55:41

标签: node.js socket.io cloudways

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

client.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的实例。 浏览器中的控制台还会打印套接字变量,其中包含" connected:true"。

但是,我没有看到"已连接"在终端(来自server.js),它只是空白。

此网站在本地工作,但在尝试将其用于Cloudways时会出现这些问题。

有什么想法吗?

我尝试过切换" localhost"对于域名和IP地址,我尝试了不同的端口,但3000是唯一一个可以让我启动server.js而没有错误的端口。

enter image description here

修改

Cloudways已确认应使用端口3000。

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

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(使用相同的地址/端口)。

1 个答案:

答案 0 :(得分:0)

也许是你的php索引...因为你正在设置localhost和端口。

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

在您的云端尝试使用他们提供给您的官方网址访问该项目:

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

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

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 version并添加带有路径的脚本标记,如:

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

观察:有些云,您需要在<script>标记中设置网址

<script src="https://demo-some-id.c9.io/socket.io/socket.io.js"></script>