NodeJ无法收听数字海洋Ubuntu上的端口

时间:2016-03-16 11:32:22

标签: php node.js nginx socket.io laravel-5.1

我正在尝试在我的服务器上实现消息传递。这是Ubuntu 14.04 / Nginx

我已经安装了

1.nodejs 
2.Redis
3.laravel 

全部成功

当我运行命令

node -v

它给我的节点版本

在我的控制器中,我的代码看起来像这样

public function sendMessage(){

        $redis = LRedis::connection();
        $redis->publish('message', 'Sending Message to Port');
        return redirect('writemessage');
    }

我的server.js代码就像这样

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');

server.listen(8890);
io.on('connection', function (socket) {

  console.log("new client connected");
  var redisClient = redis.createClient();
  redisClient.subscribe('message');

  redisClient.on("message", function(channel, message) {
    console.log("mew message in queue "+ message + "channel");
    socket.emit(channel, message);
  });

  socket.on('disconnect', function() {
    redisClient.quit();
  });

});

Redis服务器在默认的6379上运行

并且听取广播我的socket.php文件有以下代码

<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>

    <script>
        var socket = io.connect('http://localhost:8890');
        socket.on('message', function (data) {
            $( "#messages" ).append( "<p>"+data+"</p>" );
          });
    </script>

一切运行正常,但我在socket.php页面上看不到任何消息

任何想法如何调试

同样适用于Localhost

更新

所以我做了

redis-cli monitor

并尝试再次执行我的代码我可以看到redis正在广播这样的消息

1458128671.226586 [0 127.0.0.1:59112] "SELECT" "0"
1458128671.232152 [0 127.0.0.1:59112] "PUBLISH" "message" "Sending Message to Port"

但在节点方面,我没有收到它

请!!帮助我

1 个答案:

答案 0 :(得分:0)

Digital Ocean默认关闭所有端口,除了:80

您需要先打开端口。你可以在这里找到解决方案

https://stackoverflow.com/a/41408983/4556995