Ubuntu为nodejs打开/解除阻塞端口

时间:2016-12-23 14:17:26

标签: javascript node.js ubuntu socket.io port

我试图为socket.io监听端口8080但是我收到错误:

http://localhost:8080/socket.io/?EIO=3&transport=polling&t=Lai1FQh net::ERR_CONNECTION_REFUSED

我正在使用来自digitalocean的ubuntu虚拟机,首先当我登录时,我收到消息:
 The "ufw" firewall is enabled. All ports except for 22, 80, and 443 are BLOCKED

我是初学者,但并不意味着端口8080被阻止了。
我该如何解决这个问题以及我需要做什么

这是我的服务器代码:

var socket = require( 'socket.io' );
var express = require( 'express' );
var http = require( 'http' );

var app = express();
var server = http.createServer( app );

var io = socket.listen( server );

server.listen(8080, function(){
    console.log("Listening");
})

在我的网站中,我只是连接到这个端口:

<script src="node_modules/socket.io-client/dist/socket.io.js"></script>
<script>
    var socket = io.connect( 'http://localhost:8080' );
    ...
<script>

2 个答案:

答案 0 :(得分:1)

您可能正在运行程序的另一个实例,或者使用该端口的其他程序。运行:

ps aux
在你的shell中

查看正在运行的进程并杀死那些不应该运行的进程。您还可以运行lsofnetstat来查看正在侦听哪个端口的内容。请参阅这些命令的手册。

如果您可以打开8081或类似的东西而不是8080,那么这意味着某些东西已经在端口8080上侦听。您可以通过curlwget尝试连接到该端口来验证它,netcat或使用nmap。有关详细信息,请参阅其手册页。

答案 1 :(得分:1)

您收到的错误消息表示ufw(它是防火墙)阻止了除3之外的所有端口。

启用端口8080

sudo ufw allow 8080

然后重启服务器。

(从托管服务提供商网站上提供的guide可以看出)