我在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而没有错误的端口。
修改
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(使用相同的地址/端口)。
答案 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>