sharp xmpp a multiplatform net xmpp client library and
play

Sharp.Xmpp, a multiplatform .NET XMPP client library, and Android - PowerPoint PPT Presentation

Sharp.Xmpp, a multiplatform .NET XMPP client library, and Android Panagiotis (Takis) Stathopoulos https://twitter.com/panstath http://pgstath.me Presentation supported by the Greek Free/Open Source Software Society FOSDEM 2016 Sharp.Xmpp


  1. Sharp.Xmpp, a multiplatform .NET XMPP client library, and Android Panagiotis (Takis) Stathopoulos https://twitter.com/panstath http://pgstath.me Presentation supported by the Greek Free/Open Source Software Society FOSDEM 2016 Sharp.Xmpp

  2. Outline ● Part A: Sharp.Xmpp – https://github.com/pgstath/Sharp.Xmpp – C# . Net multiplatform client XMPP library – Fork of S22.Xmpp – MIT License ● Part B: Android, Xamarin, and XMPP – Tips, tricks and code for long running XMPP sessions – and background TCP connections FOSDEM 2016 Sharp.Xmpp

  3. W h y X a m a r i n a n d C # Why XMPP? Why yet another XMPP library? FOSDEM 2016 Sharp.Xmpp

  4. Background ● Sharp.Xmpp mainly developed for use by Momentum.IM: – Small-scale social networking app over XMPP – Android/Windows/Linux – App centric not web centric – Check Georgia's presentation at Indie Summit: https://youtu.be/N7AP6HTjUlk FOSDEM 2016 Sharp.Xmpp

  5. Why C# & Xamarin? ● A controversial subject but: – Built native apps in: ● Android ● Windows ● (and Linux) – aka the most widespread desktop and mobile platform s – Client centric and not server centric technologies/app. ● Comes with a cost ● Mostly good (but not perfect) support of third party libraries FOSDEM 2016 Sharp.Xmpp

  6. Why XMPP? ● Required a message distribution protocol: – Presence, subscription, message routing, etc. – Secure, Private . OTR support was must have. ● No centralized control of messaging infrastructure e.g. like: – Google Cloud Messaging or Apple Messaging Service – or closed browser specific technologies. ● Capacity to run your own messaging server – Provide an app not a service ● No need of any of IM specific functionality, but: – XMPP is not only for chat/messaging apps FOSDEM 2016 Sharp.Xmpp

  7. Why yet another library? ● Modern technologies ● Clean and easy to extend ● MIT Licensed for most flexibility ● And finally: – N o t s o m a n y C # l i b r a r i e s a v a i l a b l e FOSDEM 2016 Sharp.Xmpp

  8. What's on the roadmap ● https://github.com/pgstath/Sharp.Xmpp ● So far: Improved disconnection detection, vCard Avatars support, DNS queries, port to Xamarin, bug fixes, etc. ● Third party has already added: – Message Carbons, Archive management, basic MUC , etc. – Will integrate in a next version ● Next step: OTR support. FOSDEM 2016 Sharp.Xmpp

  9. Part B': XMPP, Android and Xamarin ● Android hates long running listening background TCP connections – Or background tasks ● Mobile OS with limited resources: – Kill Activities/Services on every opportunity – Independent from implementation of XEP-0198 stream management ● Already some good presentations by Smack during previous years – Provide Xamarin/C# perspective – And a full sample project FOSDEM 2016 Sharp.Xmpp

  10. Show me the code ● https://github.com/pgstath/SharpXmppDemo ● pgstath.me and codeproject article coming just after FOSDEM2016 ● Also check related XMPP resources http:bit.ly/1QMjS5n: – Securely register users from mobile app – Long running background process FOSDEM 2016 Sharp.Xmpp

  11. Components ● A “ Sticky ” Android service – With Intent Service like API. ● Periodic (inexact) Android Alarms ● Wakelocks and WakefulBroadcastReceivers ● Network connectivity monitoring events ● XMPP features: – Ping – Server ping before disconnection FOSDEM 2016 Sharp.Xmpp

  12. Sticky Intent-like Service ● Place your XMPP connection object in a StickyIntentService – XMPP must be placed in a Sticky Service, listening TCP connection even if no work is done. ● Provide StickyIntentService – A class with an IntentService compatible API & START_STICKY behavior – The simple Intent Service is not “Sticky” – See http://bit.ly/1PZv1er for details FOSDEM 2016 Sharp.Xmpp

  13. Alarms, Wakeful Receivers and Wakelocks ● Set an i n e x a c t Android Alarm – Ping, to keep connection alive, or connect if ● network is present. ● “ Wakeful ” Broadcast Alarm receiver – OS might sleep even before connection is made – Wakelocks are a mechanism to prevent OS from sleeping ● R e q u i r e d f o r A l a r m B r o a d c a s t r e c e i v e r s ● Long running tasks, e.g. r e c e i v i n g a file transfer FOSDEM 2016 Sharp.Xmpp

  14. Network monitoring, built in XMPP ● Make use of Android network connectivity events – Set broadcast receivers ● Make use of built in XMPP features: – XMPP ping when an alarm is fired – Server side ping before disconnection ● Results for 15min alarms: – Very low battery background usage, e.g. % – Persistent network connection ● Easily pushing messages, with out XEP push notifications! FOSDEM 2016 Sharp.Xmpp

  15. SharpXmppDemo Classes ● B a c k g r o u n d S e r v i c e , StickyIntentService , Utils ● SharpComms & IUIThreadDispatcher , multiplatform wrappers: – D e t e c t i n g a n d m a n a g i n g r e c o n n e c t i o n t i m e r s – Wakelocks – Debug messages – Run actions on the UI Thread FOSDEM 2016 Sharp.Xmpp

  16. Next Steps ● SharpXmppDemo as a separate library? ● Future announcements about: – Middleware for e n d p o i n t c o n t r o l l e d m e s s a g e s replication (provisional name: TrustVillageNet) ● Store or replicate nothing in the server! ● Minimize assumptions about server functionality! FOSDEM 2016 Sharp.Xmpp

  17. Thank you, stay tuned at: https://github.com/pgstath FOSDEM 2016 Sharp.Xmpp

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend