2009-04-26 4 views
1

현재 웹 사이트와 인터페이스하기 위해 Java 기반 데스크톱 응용 프로그램을 작성중인 프로젝트에서 작업하고 있습니다. IM 기능을 통합하고자하므로 XMPP를 사용하기로 결정했습니다.XMPP 클라이언트 비 호환성

우리의 응용 프로그램에는 다른 기능이 있으며 다른 클라이언트를 사용하여 XMPP 서버에 연결하는 사람은 우리 웹 사이트에 문제를 일으킬 수 있습니다 (예 : 클라이언트가 사용자가받은 특정 메시지 유형의 메시지를 보낼 수 있음) 사용할 수 없지만 다른 클라이언트가 메시지 유형을 보낼 수 있음).

클라이언트 만 XMPP 서버에 액세스하거나 다른 클라이언트가 특정 기능을 사용하지 못하도록 허용 할 사람이 있습니까? 저는 이것이 공개 표준에 반대한다는 것을 알고 있지만 독점적 인 IM 솔루션을 처음부터 구축하기를 원하지는 않습니다.

+0

"고객이 사용할 수없는 특정 메시지 유형으로 메시지를 보낼 수 있지만 다른 클라이언트는 해당 메시지 유형을 보낼 수 있습니다." 서버가 표준 클라이언트를 처리 할 수 ​​없거나 클라이언트가 표준 서버에서 작동하지 않는다는 것을 의미합니까? 나는 전자를 추측하고 있지만, 그렇다면 상호 운용성이 왜 문제가되는지 분명하지 않다. –

+0

기본적으로 우리는 XMPP를 사용하여 응용 프로그램의 다른 기능에서 온 일종의 상태 메시지 (일반 IM 상태 변경과 다름)를 보낼 수 있기를 원합니다 (예를 들어 모니터는 무언가를 모니터링 한 다음 상태 메시지를 보냅니다. 떨어져서). 우리 고객은 표준 채팅과는 다른 메시지 유형을 사용하여 이러한 메시지를 보내고받을 수 있지만 다른 고객은 그렇지 않습니다. 우리는 독점적 인 문제가 없지만 XMPP 기능은 정말 멋지 며 Smack API와 같은 것을 사용하고 XMPP 서버를 실행하는 것보다 훨씬 좋습니다. –

답변

1

독점적 인 솔루션을 구축하고 있습니다. 처음부터 완벽하지는 않을 것이며, 반드시 나쁜 것은 아닙니다. 그러나 XMPP 클라이언트를 지원하지 않는 한 XMPP 서비스라고하지 마십시오. 독점적 인 브라우저가 필요한 '웹 사이트'를 사용할 때와 동일한 반응을 얻을 수 있습니다.

협상 가능한 기능의 경우 Feature Negotiation을보고 서버가 다른 클라이언트에 특정 기능이 없지만 비밀리에 지원한다고 말할 수 있습니다. 실제로 시도되는 것을 차단하지는 않을 것이므로 매우 가난한 해결책입니다.

데스크톱 응용 프로그램을 구축하지 않고도 인스턴트 메시징 기능을 사용할 수 있습니다 (모든 플랫폼 지원 문제가있는 경우). Orbited을 사용하면 찾고있는 인스턴트 메시징 대화 형 기능을 사용할 수 있으며 서버에 훨씬 쉽게 통합 할 수 있습니다.

그리고 바로 옆의 점으로, 귀하의 웹 사이트에 문제를 일으킬 수있는 메시지가 안된다 더 이상이 문제를 일으키는 URL 또는 쿼리 조합 등

+0

다른 기능 때문에 데스크톱 응용 프로그램이 필요합니다. XMPP는 사용하기 쉽기 때문에 XMPP 서버를 실행하고 Smack API를 사용합니다.문제는 XMPP 서비스라고하지 말고 다른 XMPP 클라이언트가 작동하는 것을 원하지 않는다는 것입니다. 그러나 우리가 아닌 클라이언트를 무시할 수있는 방법은 없습니다. Steam이 (게임, 상점 등을 관리하는) 다른 모든 것들 위에 IM 프로그램을 가지고있는 Steam과 같을 것 같습니다. 누군가 다른 사람을 위해 클라이언트를 운영하기를 원하기 때문에 다른 사람이 자신의 IM 클라이언트를 작성할 수 없기를 바랍니다. –

+0

Humm. 연결 인증을 납치하는 방법은 무엇입니까? 어쩌면 별도의 인증 서비스를 사용하여 연결 API에 전달할 수있는 토큰을 반환 할 수 있습니다. 다른 클라이언트가 동일한 춤을 추기 때문에 연결을 차단합니다. 어쩌면 추한 것 같아. – Joel

+0

@Joel - 내가 언급 한 pubsub에 관심이있을 수 있습니다. 주어진 노드에 액세스 할 수있는 허용 된 사용자 목록을 만들어 원하는 보안을 제공 할 수 있습니다. – Robin

0

가있을 수있는 것보다 모든 요구 사항을 잘 모르겠지만 아마도 XMPP의 pubsub 또는 pep 기능을 사용할 수있는 것 같습니다. XMPP 확장 기능으로 사용자 수준에서 사용자 수준 (Personal Eventing Protocol XEP-0163)에 액세스 할 수있는 특수 페이로드를 만들 수 있습니다. 관심있는 모든 사람에게 일반적인 알림 일 뿐인 경우 PubSub (XEP-0060)이 원하는 것일 수 있습니다.

이러한 프로토콜은 pubsub 노드에 대한 보안 액세스를 허용하며 다른 프로토콜이므로 표준 채팅 메시지의 영향을받지 않습니다.