我一直在使用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:3000
和http://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端口
答案 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();