كيف openfire عنصر خارجي يمكن التعامل مع وجود الاشتراكات ؟

StackOverflow https://stackoverflow.com/questions/9431178

  •  12-11-2019
  •  | 
  •  

سؤال

لقد بنيت خارجي openfire مكون على أساس اضرب المكتبة من خلال توسيع AbstractComponent الدرجة.أريد العملاء الاشتراك في بلادي العنصر والحصول على وجود إخطارات عندما يذهب عنصر على الانترنت وغير متصل.لذا سؤالي هو كيف يمكننا التعامل مع الوجود وجود اشتراكات الخارجية مكون على أساس AbstractComponent?

حاليا لا يمكن أن تستجيب إلى وجود طلب باستخدام handlePresence() طريقة ولكن كيف ينبغي لي أن أضيف العملاء إلى عنصر قائمة (لا عناصر خارجية تسمح قائمة في المقام الأول) ؟

@Override
protected void handlePresence(Presence presence){
    if (presence.getType() ==  Presence.Type.subscribe){
        System.out.println("The component has received Subscribtion request.");
        Presence original =  presence;
        Presence response = new Presence();
        //Swap the sender/recipient fields
        response.setTo(original.getFrom());
        response.setFrom(original.getTo());
        //Convert the text to upper case
        response.setType(Presence.Type.subscribed);
        send(response);

    }
}
هل كانت مفيدة؟

المحلول

مكونات يكن لديك القائمة المقدمة من قبل الملقم.يمكنك تخزين الخاص بك القائمة في قاعدة البيانات إذا كنت بحاجة إلى.بعض التطبيقات يمكن أن تحصل بعيدا مع أي قائمة على الإطلاق (عندما تريد ببساطة أن تظهر على الإنترنت إلى الجميع).

لتظهر على الانترنت الجميع (أبسط النهج ، أي قائمة التخزين المطلوبة):

  • عندما تتلقى <presence type="subscribe"/> رد مع <presence type="subscribed"/>
  • عندما تتلقى <presence type="probe"/> رد مع <presence/> (أو أي حالة كنت تريد أن تكون كما هو موضح)

لتخزين قائمة يتطلب أكثر قليلا من العمل ، ولكن يسمح لك لتتبع من الذي يحق له أن يرى وجودكم و وجودها يحق لك أن ترى.في بعض الحالات قد تفضل استخدام العادي اتصال العميل هنا إذا كنت لا تريد إدارة الخاص بك القائمة.جاك Moffitt كتب بلوق وظيفة على فكرة هنا: http://metajack.im/2008/08/04/thoughts-on-scalable-xmpp-bots/

علما بأن جميع أنحاء هذا المنصب أنا حذفت " إلى " و " من " السمات على موشحات.فمن يصل إلى المكون لوضع " إلى " و " من " على المنتهية ولايته موشحات.جميع المكالمات الواردة موشحات سوف يكون " إلى " و "من".

عرض مكون وجود للمستخدمين

الأساسية الواردة موشحات تحتاج إلى التعامل معها هي:

  • <presence type="subscribe">

    • المرسل يريد الاشتراك الخاص بك وجود تحديثات.يمكنك إما قبول أو رفض هذا.إذا كنت توافق ، يجب تخزين المرسل المعهد الدبلوماسي في قاعدة البيانات الخاصة بك حتى تعرف عليك أن ترسل لهم وجود تحديثات عند الضرورة.
    • المواصفات: http://xmpp.org/rfcs/rfc6121.html#sub-request-handle
  • <presence type="unsubscribe">

    • المرسل يريد التوقف عن تلقي وجود التحديثات من أنت.يجب إزالتها من قائمة من الناس مشترك التحديثات الخاصة بك ومن ثم إرسالها مرة أخرى <presence type="unsubscribed"> و <presence type="unavailable">.
    • المواصفات: http://xmpp.org/rfcs/rfc6121.html#sub-cancel-inbound (على الرغم من أن النص هو مصممة أكثر نحو خوادم من مكونات هنا).
  • <presence type="probe">
    • المرسل يسأل عن الخاص بك الوجود الحالي.ببساطة الرد مع أحدث وجود مقطع لهذا المستخدم.هذا هو عادة المرسلة من قبل المستخدم الملقم عند تسجيل الدخول.

تلقي وجود المستخدمين في مكون

بالإضافة إلى ذلك إذا كنت تريد المكون معرفة وجود المستخدمين تحتاج إلى إرسال طلب الإشتراك لهم: <presence type="subscribe">.يجب أن تكون مستعدا لتلقي إما موافقة (<presence type="subscribed">) أو الرفض (<presence type="unsubscribed">).

عندما المكون الأول يأتي على الانترنت ، فإنه يمكن جلب الحالية وجود المستخدم عن طريق إرسال <presence type="probe"> لكل مستخدم.ليست هناك حاجة للقيام بذلك أكثر من مرة واحدة لكل مستخدم في حين أن المكون تشغيل المستخدم الملقم سوف نرسل لك تلقائيا من وجود تحديثات إذا كان المستخدم الموافقة على طلب الإشتراك الخاص بك على النحو الوارد أعلاه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top