【问题标题】:What do I replace "http://localhost:3000" with when using a server and not local machine?使用服务器而不是本地计算机时,我应该用什么替换“http://localhost:3000”?
【发布时间】:2020-03-26 08:31:29
【问题描述】:

我一直在用 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如果11.22.33.444是服务器ip,但是浏览器只是超时,服务器控制台没有输出。

最后我需要运行一个看起来像这样的 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');
});

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

【问题讨论】:

  • 可能是服务器上的端口没有暴露?
  • 服务器在哪里运行?你能从命令行ping服务器吗?
  • 如何暴露端口?服务器是在我租用的私人公司运行的 VPS。

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


【解决方案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");
 });

【讨论】:

  • 我不认为这是 OP 询问的内容。
  • 但是前端呢?它显示在 socket.io 文档上; var socket = io.connect('h ttp://localhost');那么如果我从浏览器运行它,我应该用什么替换 'h ttp://localhost'?
  • 如果本地主机在同一台服务器上,您可以使用它
  • 我试过了,还是不行。可能是因为浏览器在我的电脑上,而服务器在我不知道的其他地方。
【解决方案2】:

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

【讨论】:

  • 实际上它曾经工作过,但现在不行了。我很困惑。猜测它是某种安全问题。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 2015-04-17
    • 2014-04-15
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2020-09-19
    相关资源
    最近更新 更多