2017-01-13 1 views
1

xmpp + openfire + strophe를 사용하여 웹 채팅을 구현했습니다. 동일한 openfire 및 xmpp 서버에서 우리는 IOS 채팅도 개발했습니다.Xmpp, Strophe Js : 동일한 사용자를위한 여러 활성 연결

아래의 문제가 있습니다.

는 이제 동일한 사용자 A가 웹 채팅에 연결하는 사용자 B.과의 대화가 좌향 선회와 사용자 B를 사용하여 XMPP하는 iOS 앱과 사용자에 XMPP에 연결된 사용자 A가 유저 (A) 다음 사용자 A에게 메시지를 보냅니다 말할 수 있습니다 것입니다 웹 채팅 연결에만 메시지가 있습니다.

사용자 A는 IOS에서 xmpp와 연결하고 사용자 B는 메시지를 보내면 사용자 A는 웹 채팅이 아닌 IOS 앱에서만 메시지를 받게됩니다.

사용자 A는 생성 된 모든 연결에서 메시지를받을 수 있습니까?

사용자가 여러 xmpp 연결을 가질 수 있으며 모든 연결이 다른 사용자에게 메시지를 보내고 사용자의 모든 연결에서 메시지를 가져올 수 있습니까?

Strophe Js와 IOS에서이 문제를 해결할 수 있도록 도와 주시겠습니까?

답변

2

자원을 (https://wiki.xmpp.org/web/Jabber_Resources)으로 설정하여 관리 할 수 ​​있습니다. 각 장치는 다른 리소스 ("myPc", "android", "iphone", "ipad", "Spark", 이는 단지 임의의 문자열 임)를 선언해야합니다.

Openfire는 여러 리소스 (서버 -> 서버 설정 -> 리소스 정책)를 관리하기 위해 구성해야합니다.

EDIT : Openfire는 우선 순위 기반 전송 시스템을 사용하여 가장 우선 순위가 높은 리소스를 선택하고 메시지 만 보냅니다. (멋진 토론 : https://community.igniterealtime.org/thread/53377) 속성 설정하여 사용 :이 질문에 따르면

route.all-resources 

true 

에를, 당신은

에 살고 있고 또한 Openfire server, multiple connection, route.all-resources doesn't work

route.really-all-resources 

필요

true 

수행하는 방법 : 데이터베이스에서

  • , 두 속성
  • 또는의 Openfire 웹 클라이언트가
  • "ofProperty"테이블에 추가 -> 서버 -> 서버 관리자 -> 시스템 속성 (추가 페이지 하단에 있음).

    1. 존재는 우선 순위 (-128과 128 사이의 숫자)가 있는지

되면 1을 조심스럽게이 번호를 변경의 기본 , 명심하십시오.물론 클라이언트의

  • 메시지를 전송하는 동안하지 자원을 포함한다 (당신의 사건 있지만, 올바른 동작을 유지하기 위해주의) 내가 미안해
  • 을하지만 난 방법을 몰라한다 일부 예제에서 볼 수 있듯이 Strophe.js에 리소스 이름을 지정하려면 프로그래머가 수동으로 문자열 연결 ([email protected]/resource 로그인 중)을 추가하십시오.

    +0

    답장을 보내 주셔서 감사합니다. 나는 xmpp에서 두 개의 서로 다른 리소스로 연결했지만 메시지는 최신 연결에서만 수신되었습니다. 동일한 사용자의 각 연결에서 메시지를 받고 보내려고합니다. 가능합니까? –

    +0

    오픈 파이어는 어떤가? 옵션을 선택하셨습니까? 그러나 클라이언트에 리스너를 추가하는 방법에 대해 확인하십시오. 채팅을 생성하는 동안 조건 부재로 인해 청취자를 놓칠 수 있습니다. – MrPk

    +0

    이 페이지에서 openfire "서버 -> 서버 설정 -> 리소스 정책"을 선택했습니다. "Never Kick"옵션. –

    관련 문제