Socket.io只适用于本地

时间:2015-11-05 14:51:22

标签: node.js sockets socket.io

我观看了有关websockets(socket.io)的laracast视频,并亲自尝试过。在localhost上工作正常,但是当我尝试在服务器上运行时,我只是出错。

我的 socket.js:

var server = require('http').Server();

var io = require('socket.io')(server);

var Redis = require('ioredis');

var redis = new Redis();

redis.subscribe('report-created');

redis.on('message', function(channel, message){
message = JSON.parse(message);

io.emit(channel + ':' + message.event, message.data);
});

server.listen(3000);

客户端:

<script>
    $.ajaxSetup({
        headers: {
            'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
        }
    });

    var socket = io('IPFromServer:3000');
    new Vue({
        el: 'body',
        data: {
            reports: []
        },

        ready: function(){
            socket.on('report-created:App\\Events\\ReportCreated', function(report){
                console.log(report["reportCreated"]);



                $.ajaxSetup({
                    headers: {
                        'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
                    }
                });

                window.location.replace("http://autoreport.dev/fileentry/get/" + report["reportCreated"]);

            }.bind(this));
        }
    });
</script>

就像我说的,它正在使用Localhost就好了,但不是在服务器上我总是收到此错误消息:

GET ...socket.io/?EIO=3&transport=polling&t=1446734287420-0 net::ERR_CONNECTION_TIMED_OUT   socket.io.min.js:1

我google了很多,但找不到任何答案。也许你们中的一些人知道解决方案。

问候

1 个答案:

答案 0 :(得分:1)

服务器脚本更改

server.listen(3000);

server.listen(3000,'0.0.0.0')

客户端脚本中更改

var socket = io('IPFromServer:3000');

var server = 'IPFromServer:3000',
    socket = io.connect(server);

确保服务器字符串正确