2012-05-31 2 views
0

redis를 사용하여 백엔드 프로세스와 노드간에 메시지를 전달하는 node.js 앱을 개발하려고합니다.Node.js : redis pubsub 이벤트 내에서 세션을 업데이트 할 수 없습니까?

사용자 세션 (연결 세션) 표시기에 메시지를 수신했음을 저장할 수 있기를 원합니다.

사용자가 "IsMessageRecieved"아약스 쿼리를 수행 할 때 내가 그에게 세션에 배치 한 값을 반환하려고합니다.

다음 코드를 사용하여 행운을 빕니다. 세션이 업데이트되지 않았습니다.

redisSub.on("message", (channel, connectsid) -> 
    sessionStore.get connectsid, (err, session) -> 
    if (err || !session) 
     return 
    else 
     session.MessageRecieved = true 
     redisSub.unsubscribe('USER_DATA_READY_' + connectsid) 
     return 
    return 
) 

무엇이 문제인지 아십니까? 레디 스-CLI가 값 "ABC"로, 채널에 수동으로 게시 실행 후

var redisSub = require('redis').createClient(); 
redisSub.subscribe('USER_DATA_READY_abc'); 
redisSub.on("message", function(channel, connectsid) { 
    console.log(channel, connectsid); 
}); 

그리고 :

덕분에, 리 오르

+0

CoffeeScript에서 node.js 질문을하면 사람들이 질문에 대답 할 수있는 단계가 추가됩니다. 나는 당신이 대답을 원한다면 조언하지 않을 것이다. – Fritzy

답변

0

나는 당신의 예를 단순화.

~ % redis-cli 
redis 127.0.0.1:6379> publish USER_DATA_READY_abc abc 
(integer) 1 

그리고 예상 출력을 가지고 : 여기

USER_DATA_READY_abc abc 

사실을 추가하여 호출되고 난

  • 가에 ("메시지") 확인 제안 것입니다 로깅 메시지입니다.
  • redis-cli 을 사용하여 기존 세션을 수동으로 게시하고 콜백에서 결과가 트리거되는지 확인하십시오. 내가 게시 의심

이 이루어되지 않는, 또는 아마 당신은 오른쪽 채널에 가입하지 있습니다.

관련 문제