使用服务器而不是本地计算机时,我该如何替换“ http:// localhost:3000”?

时间:2020-03-26 08:31:29

标签: javascript node.js express websocket socket.io

我一直在使用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);

那么我该如何通过浏览器访问它?我尝试使用http://mywebsite.com:3000http://11.22.33.444:3000来确定服务器IP是11.22.33.444,但是浏览器只是超时了,服务器控制台中没有输出。

最终我需要运行一个看起来像这样的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端口

3 个答案:

答案 0 :(得分:1)

如果您阅读了文档,将会发现有一个如何将它与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");
 });

答案 1 :(得分:0)

认为我刚刚解决了它。我尝试了一个不同的端口,它起作用了:/

答案 2 :(得分:0)

无需在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();