2015-07-05 3 views
0

У меня есть сокет io redis и express pubsub происходит, в моем локальном хосте он работает отлично, я использую laravel events для публикации в redis, тогда сокет io должен излучать сообщение, его работа в порядке на локальном хосте, но на моем рабочем сервере, который является ec2 vm, он только подключается, и я вижу сообщение «подключено», но оно не генерирует никаких событий, даже несмотря на то, что сообщения публикуются для redis здесь, это мой клиент и серверsocket io connect, но не emmiting

//client 

<script type="text/javascript">// <![CDATA[ 
      var socket = io.connect('http://127.0.0.1:3000/'); 

      socket.on('connect', function(data){ 
       //socket.emit('subscribe', {channel:'score.update'}); 
       console.log('connected'); 
      }); 

      socket.on('notification.update', function (data) { 
       //Do something with data 
       console.log('Notification Caught: ', data); 

      }); 




// ]]></script> 




//server 
var express = require('express'), 
    http =  require('http'), 
    server = http.createServer(app); 

var app = express(); 

const redis = require('redis'); 
const io =  require('socket.io'); 
const client = redis.createClient(); 

server.listen(3000, 'localhost'); 

io.listen(server).on('connection', function(client) { 
    const redisClient = redis.createClient() 
    redisClient.subscribe('notification.update'); 

}); 
    redisClient.on("message", function(channel, message) { 
     //Channel is e.g 'score.update' 
     client.emit(channel, message); 

    }); 

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

ответ

0

Вы должны изменить прослушивание вашего сервера:

изменить это:

var express = require('express'), 
http =  require('http'), 
server = http.createServer(app); 

var app = express(); 

const redis = require('redis'); 
const io =  require('socket.io'); 
const client = redis.createClient(); 

И

server.listen(3000, 'localhost');  

io.listen(server).on('connection', function(client){ 
    //Code 
}); 

To:

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

И

io.on('connection, function(client){ 
    //Code 
}); 

server.listen(3000, function(){ 
    console.log("Listening on :3000"); 
});