使用服务器而不是本地计算机时,我应该用什么替换"http://localhost:3000"?



我已经用node和express做了很多在线课程。我想让sockets.io正常工作,但我现在甚至无法建立连接。我正在使用一个cPanel虚拟专用服务器,并在服务器终端中运行代码,然后尝试使用服务器上托管的网站来访问服务器上运行的.js文件。

我尝试过各种不同的东西,但我把它简化到最基本的层面,试图建立联系。我看到的所有视频都在本地机器上运行,并使用本地机器上的命令提示符运行.js文件和浏览器访问http://localhost:3000

我在cPanel服务器上运行的.js文件如下所示;

var express = require('express');
var app = express();
app.get('/', function(req,res){
res.send('Hello world 2');
})
app.listen(3000);

那么我该如何通过浏览器访问它呢?如果11.22.33.444是服务器ip,我已经尝试过http://mywebsite.com:3000http://11.22.33.444:3000,但浏览器刚刚超时,服务器控制台中没有输出。

最终我需要运行一个socket.io命令,它看起来像这样;

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

在我看过的所有教程中,他们都使用localhost:3000,但没有人解释如何在实际服务器上访问它,所以我很困惑。

还有其他例子,如;

...
const http = require('http').createServer();
...
http.listen(3000 => () => {
console.log('listening on port 3000');
});

这只是代码的一部分,但我想知道如何在没有http://localhost:3000的情况下从浏览器访问3000端口

如果你阅读了这些文档,你会发现有一个如何将其与express连接的指南:https://socket.io/docs/

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(3000);
// WARNING: app.listen(3000) will NOT work here!
app.get('/', function (req, res) {
res.status(200).json({ message: "Connected" });
});
io.on('connection', function (socket) {
console.log("somebody connected");
});

我想我刚刚解决了这个问题。我尝试了另一个端口,它成功了:/

无需在io.connect((中指定任何地址

const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
http.listen(process.env.PORT || 3000, function() {
});
<script src="/socket.io/socket.io.js"></script>
var socket = io.connect();

最新更新