2012-11-29 2 views
0

나는 nodejs에 redis와 socketio로 pubsub를 시도하고있다.socketio가있는 nodej에있는 redis pubsub : 게시자가 메시지를 게시하지 않습니까?

내 서버 측 코드는 다음과 같습니다

var host = window.location.host.split(':')[0]; 
var socket = io.connect('http://' + host); 
socket.on('messages',function(msg){ 
    console.log(msg); 
}) 

하지만 index.html을 CONSOLE.LOG에

이 실행되지 않습니다 :

var io = require('socket.io').listen(server); 
var pub = redis.createClient(); 

io.sockets.on("connection", function(socket) { 
    console.log('connecteed'); 

    var sub = redis.createClient(); 

    sub.subscribe("messages"); 
    sub.on("message", function(channel, message) { 
     console.log('message',message); 
     socket.emit(channel,message); 
    }); 

    socket.on("disconnect", function() { 
     sub.unsubscribe("messages"); 
     sub.quit(); 
    }); 
}); 
pub.publish("messages", JSON.stringify({type: "foo", content: "bar"})); 

내 HTML 페이지의 index.html을 다음과 같은 스크립트가 포함되어 있습니다.

초등이지만 내 코드에서 오류를 찾지 못했습니다. 어디 있니?

답변

0

메시지를 게시 할 때 클라이언트가 연결되어 있지 않기 때문일 수 있습니다 (힌트 : io.socket.on 연결 기능은 pub.publish 이후에 실행 됨). 메시지 각 초를 보내드립니다

setIntervall(function(){ 
    pub.publish("messages", JSON.stringify({type: "foo", content: "bar"})); 
},1000); 

이 함께

pub.publish("messages", JSON.stringify({type: "foo", content: "bar"})); 

를 대체하기 위해 시도하고 당신에게 당신의 설정을 확인하기 위해 충분한 시간을 줄 것이다.

+0

예, 이제 작동합니다. 소켓이 실제로 연결될 때 이벤트가 발생하지 않는 것 같습니다. 이상하게 생각합니다. 아마 더 많은 이벤트가 필요합니다. –

관련 문제