2009-12-24 3 views
1

좋아요, 이것은 질문이 아닙니다. 내가 본 wokkel과 twisted의 모든 예는 JID에서 생성 된 자원을 제대로 관찰하지 못합니다.왜 모든 twisted/wokkel xmpp 예제가 xmpp 프로토콜에서 JID의 올바른 사용법을 무시합니까?

<message to="[email protected]" from="[email protected]/Example2C2F32A1" type="error"><body>echo: None</body><error code="400" type="modify"><bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">If set, the 'from' attribute must be set to the user's full JID.</text></error></message>

전체 서버 :

구글 토크 클라이언트는 같은 오류를 wokkel/그들이 응답에 전체 JID를 설정하지 않기 때문에 결과적으로 휴식 일반적으로 트위스트 (매우 숨겨진, 낮은 수준)를 사용하여 구축 발행 된 jid는 self.parent.authenticator.jid.full()의 프로토콜 핸들러에서 얻을 수 있습니다.

메시지를 보낼 때 보낸 사람 필드에 전체 jid를 사용하십시오. 그렇지 않으면 일부 서버가 사용자를 좋아하지 않을 것입니다. 너는 네 모든 머리카락을 꺼내 ​​울 것이다.

+3

아래와 같이 코드는 당신이 용감하게 (나는이 예제 wokkel 코드가 이상한 오류를 참조 GTALK를 사용하는 경우 발프하지 만들 수있는 방법) 질문으로 시작하여이 문제를 저장하고 전송과 함께 코드/수신 할 수 있습니다 xmpp 패킷. 그런 다음 self.parent.authenticator.jid.full()에서 이미 알아 낸 내용으로 질문에 대답하십시오. 그렇다면 호감이가는 질문/대답이 있습니다. –

답변

5

이 특별한 경우에 비 질문에 대한 더 나은 대답은 보낸 사람 주소를 전혀 설정하지 않아야한다는 것입니다. 모든 서버가 기꺼이 빈칸을 채우고 클라이언트의 JID가 무엇인지 파악하지 않아도됩니다.

0

내 실험에 따르면 self.parent.authenticator.jid.full()이 아니라 self.parent.jid.full()입니다.

 reply = toResponse(msg, msg.getAttribute('type')) 
     reply.addElement('body', content=unicode(msg.body)) 
     reply["from"] = self.parent.jid.full() 
     self.send(reply)