Laravel 5.x和Node JS(Socket.IO)

时间:2016-06-01 10:14:16

标签: node.js laravel

嗨我在使用laravel 5应用程序和NodeJS(Socket.IO)时遇到问题我不知道为什么我在我的监听器链接中获取404控制台

我的项目在localhost:8080中运行,我有2个链接:

  1. 发射事件
  2. 写作
  3. 在我的写作页面上,我收到了一个错误(来自我的浏览器控制台):

    获取http://localhost:8080/socket.io/?EIO=3&transport=polling&t=LKBNQCv 404(未找到)

    我的socket.js位于我的laravel app根文件夹中:

    var app = require('express')();
    var http = require('http').createServer(app);
    var io = require('socket.io')(http);
    var Redis = require('ioredis');
    var redis = new Redis();
    
    redis.subscribe('test-channel', function(err, count) {
    
    });
    
    redis.on('message', function(channel, message) {
         console.log('Message Recieved: ' + message);
    
         message = JSON.parse(message);
    
         io.emit(channel + ':' + message.event, message.data);
    });
    
    http.listen(8080, function(){
         console.log('Listening on Port 8080');
    });
    

    我的javascript on view(监听器):

    <script src="{{ asset('assets/js/socket.io.js') }}"></script>
    
    <script>
    var socket = io('http://localhost:8080');
    socket.on("test-channel:App\\Events\\NodeJSEvent", function(message){
         // increase the power everytime we load test route
         $('#power').text(parseInt($('#power').text()) + parseInt(message.data.power));
     });
    </script>
    

    每当我发射我的其他网址(触发并添加电源的网址)时,我会在终端上收到此消息:

    {"event":"App\\Events\\NodeJSEvent","data":{"data":{"power":"10"},"socket":null}}
    

    提前感谢您的帮助。

    编辑:

    好的,感谢Frank Provost的评论并指出我遇到问题的地方,我现在更改了我的端口,我的节点服务器从8080端口监听到3000(请注意我的项目正在运行{ {3}}),现在我当前的问题是我现在收到错误:

    socket.io.js:1456 GET localhost:3000/socket.io/… net::ERR_CONNECTION_REFUSED
    

    那我现在应该在哪里看?我需要在某处配置某些东西吗?

    我在我的服务器和apache2上使用vagrant和Ubuntu 14.4。

    提前再次感谢

1 个答案:

答案 0 :(得分:0)

看起来我已经解决了我的困境,我尝试在我的流浪文件中添加这些行:

#redis
config.vm.network :forwarded_port, guest: 6379, host: 6379

#node
config.vm.network :forwarded_port, guest: 3000, host: 3000

现在感谢所有帮助过我的人的答案,建议和时间。