2013-05-13 7 views
0

주어진 연락처가 메시지를 보내기 전에 온라인 상태인지 알 수있는 적절한 xmpp4r 방법은 무엇입니까?xmpp4r을 사용하여 주어진 Jabber ID의 온라인/오프라인 상태를 검색 할 수 있습니까?

샘플 xmpp4r 코드를 게시 할 수 있습니까?

  1. 온라인 문의하는 경우가 보내 : 일반 메시지

가 여기에 내가 코드를 작업 한 것들입니다 그밖에

  • , 이메일 연락처 여기

    내 사용 사례입니다 :

    1. 나는 장소를 찾을 수없는,

    그러나 존재의 변화를 감지하기 위해 다시 전화를 등록 받기 명단/연락처 목록

  • 를 여러 유형의

  • 의 메시지를 보내 직접 주소 이 같은 작업 흐름 :

    1. 루프 각 JID를 통해 명단

    2. 0123을에
    3. jid.is_online? 제목과 실패 할 경우, 당신은 사용자가 오프라인 알고 : == true를, 그렇지

    4. IM

      을 보내, 이메일

    나는 당신이 JID에게 유형의 메시지를 보낼 것을 읽은를 보냅니다. 내 테스트에서 사용자가 온라인이면 헤드 라인 유형의 메시지를 받게됩니다. 이는 사용자가 온라인 상태를 판단하기 위해 잡음이 아닌 읽기 전용 메시지를 수신해야하기 때문에 차선책입니다.

    나는 로그인 할 때 모든 연락처가 다시 ​​온라인 상태임을 나타 냈습니다. 그 상태는 온라인 상태임을 나타냅니다. 연결이 끊어 지거나 현재 상태가 변경되지 않았다고 가정하면 아직받을 수 없습니다. 따라서 현재 상태의 콜백을 등록하고 ping을 수행 한 초기 사용자를 기록한 다음 실행중인 현재 상태 콜백에 따라 목록에 추가하거나 제거해야합니다.

    1. 내가 통해 xmpp4r에 기호 모든 "내가 여기"존재 확인서를 수집하는 방법에 대한 몇 가지 예제 코드를받을 수 :이 그것을 할 수있는 방법이 진정 경우

      ?

    2. 왜, 오 왜, XMPP 이런 식으로 디자인 된 이유는 이것이 "is_online_and_available"방법을 제공하는 것보다 낫다?

  • 답변

    0

    그래서 여기에 대한 대답은 다시 메시지 호출을 추가하고 유형의 블록 내에서 확인하고 있습니다 : 이것은 스레딩 필요

    m = Message.new(to, body) 
    cl.send(m) 
    
    cl.add_message_callback do |m| 
        if m.type == :error 
        puts "type: #{m.type}" 
        else 
        puts "not an error" 
        end 
    end 
    

    당신이 응답을 수신 할 필요가있다.