2015-11-05 60 views
-1

我观看了一个关于websockets(socket.io)的laracast视频并自己尝试了一下。在本地主机上它工作得很好,但是当我尝试在服务器上运行它时,我只是得到错误。Socket.io只能在本地工作

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> 

就像我说的,它是工作在本地主机上就好了,但不是在服务器上,我总是得到这个错误消息:

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

我GOOGLE了很多,但无法找到任何答案。也许你们有些人知道一个解决方案。

问候

回答

1

服务器脚本变化

server.listen(3000); 

server.listen(3000,'0.0.0.0') 

而在你客户脚本变化

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

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

,并确保服务器字符串正确

+0

感谢,但我仍然得到同样的错误。 –

+0

@ A.Janik修改我的答案 – efirvida

+0

感谢更新,但仍是同样的错误 –