2017-10-24 14 views
0

私はかなり混乱しています。私はMampでlocalhost上でこのアプリケーションをテストしていましたが、すべてうまくいっていましたが、開発サーバーに移動すると、クライアントはサーバーからのメッセージの受信を停止します。私はそれをVuejsコンポーネントの内部で使用しています。Socket.io nginx Redis - サーバーからのメッセージを受信して​​いないクライアント

クライアントでは、socket.on('connect')が記録されており、2番目のチェックがtrueを返しています。

これは私のコードです:

サーバー

var server = require ('http').Server(); 
var io = require ('socket.io')(server); 
var Redis = require ('ioredis'); 
var redis = new Redis(); 


redis.subscribe('chat'); 

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

    // channel:event:to_id:to_type - message.data 
    io.emit(channel + ':' + message.event + ':' + message.to_id + ':' + message.to_type, message.data); 
    console.log(message +' '+ channel); 
}); 

server.listen('6001'); 

クライアント

var io = require('socket.io-client') 
var socket = io.connect('http://localhost:6001', {reconnect: true}); 
... 
mounted() { 
    console.log('check 1', socket.connected); 
    socket.on('connect', function() { 
     console.log('check 2', socket.connected); 
    }); 

    socket.on('chat:newMessage:'+this.fromid+':'+this.fromtype, (data) => { 
     console.log('new message'); 
     var message = { 
     'msg': data.message, 
     'type': 'received', 
     'color': 'green', 
     'pos': 'justify-content-start', 
     } 
     this.messages.push(message); 
    }); 
} 

nginxのconfに

upstream node1 { 
    server 127.0.0.1:6001; 
} 
server { 
    listen 80; 
    server_name localhost; 

    location/{ 
     #Configure proxy to pass data to upstream node1 
     proxy_pass http://node1/socket.io/; 
     #HTTP version 1.1 is needed for sockets 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
    } 
} 

ありがとうございます!

答えて

0

私は解決策を見つけました。

私は localhost

を使用していた

私は

var socket = io.connect('http://localhost:6001', {reconnect: true}); 

を交換しました:

var socket = io.connect('http://'+ window.location.hostname +':6001', {reconnect: true}); 

そして今、すべてが正常に動作しています。

関連する問題