我已经用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:3000
和http://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();