phone

    • chevron_right

      Monal IM: 4.8 for iOS released, new mac beta

      Anu • news.movim.eu / PlanetJabber • 12 October, 2020

    4.8 for iOS should be approved soon and should start showing up in the app store soon. Since there weren’t a ton of builds for it, the mac build is being tested still and the beta has been updated. Ideally that doesnt have issues and will be released soon too .

    • wifi_tethering open_in_new

      This post is public

      monal.im /blog/4-8-for-ios-released-new-mac-beta/

    • chevron_right

      The XMPP Standards Foundation: XMPP bites into the apple!

      emus • news.movim.eu / PlanetJabber • 5 October, 2020 • 6 minutes

    Welcome to the XMPP newsletter covering the month of September 2020.

    Newsletter translations

    Translations of the XMPP Newsletter will be released here:

    XSF Announcements

    The XSF started the application period for its annual XSF Board and XSF Council elections. Applicants for the council must be elected XSF members, while board seats are open to everyone. If you are interested to apply for any of those positions please visit the application page .

    The Q4 2020 XSF membership application period is open as well. If you are interested to become an XSF member you can apply here .

    Articles

    The German blog kuketz-blog.de published part 6 of its messenger series [German] covering the Android client Conversations.

    Tigase published an article on the development of their multiplatform XMPP Library Halcyon written in Kotlin. In another article later this month they wrote on publishing and subscribing via XEP-0060 . And to close this article serie, Tigase explains the STUN & TURN setup with their Tigase XMPP server using XEP-0215 .

    Software news

    Clients and applications

    A new major version of Movim is out, with improved notifications, new video-conferencing, chat features and some major performance overhaul. A new version for the Android application is also available to integrate all those features in the Android environment. Discover all the improvements of this new release on the official release note Movim 0.18 – Oterma . Have a look at Movim’s improved draw widget:

    Movim

    Gajim Development News (September) : this month's post marks one year of Gajim Development News! The rework of Gajim’s preferences window has been completed. We improved group chat invitations and made group chat settings easier to access. Also, joining a group chat is now much prettier.

    MCabber, the venerable old text UI client, has been released in version 1.1.1 and 1.1.2 . Apart from bugfixes, support for displaying the number of unread messages and refactorization of carbon message handling has been implemented.

    The Python SDK for GE WiFi-enabled kitchen appliances, gekitchen , made its first GitHub release. The primary goal is to use it to power integrations for Home Assistant , though that probably needs to wait for some new entity types. It is using XMPP as a mean to authenticate, since it is what the GE SmartHQ app uses to communicate with devices.

    XMPP on iOS and Mac is getting traction after all:

    • Hello BeagleIM 4.0 and SiskinIM 6.0 ! Their iOS and MacOS clients now speak Mediated Information eXchange (MIX) ( XEP-0369, XMPP’s new group chat protocol ). VoIP connectivity has been improved with Jingle Message Initiation ( XEP-0353 ), Last Message Correction ( XEP-0308 ) is available for editing messages which were already sent, and other features like Message Retraction ( XEP-0424 ) and quick replies for quoting were introduced. Support for CAPTCHA forms has been added as well: Extended In-Band Registration ( XEP-0158 ) is invoked for additional verification during account registration. Of course there are many more changes and bugfixes!

    • The iOS and MacOS client Monal got a new push server and received improvements for Message Archive Management. This is one of the many changes to arrive in future releases. Be prepared and get a glimpse in the Monal Beta Testflight .

    Servers

    No chance for SPAM: Openfire presents their new 'Spam blacklist' plugin which enables reporting for users. Everyone, please report potential spammers! Openfire’s monitoring plugin has been released in version 2.1.0, featuring full text search for personal archive messages.

    The Prosody XMPP server team has been busy this month with several exciting things. Firstly, the Prosody 0.11.6 release announcement . They also published a suite of new modules to allow simple invite-based account registration which can help guide new users through choosing a suitable client and registering their first XMPP account. Finally, they published a round-up of advice for everyone on how to help address spam on the XMPP network .

    Prosody

    Libraries

    Libstrophe, a lightweight XMPP client library written in C, released version 0.10.0 which, besides bugfixes and a new API, brings new features: SCRAM-SHA-256 and SCRAM-SHA-512 support, c-ares support, LibreSSL support and global timed handlers that fire periodically regardless of connections status

    There is a new beta online for Smack 4.4.0 (Smack 4.4.0-beta2) , the Ignite RealTime Java XMPP library.

    Other

    Google Summer of Code 2020: Anmol summarized his three months work on In-Band Real Time Texting (RTT) for Dino (XMPP Desktop Client) in a final blog post .

    The owner of the joinxmpp.org domain is lacking time for further development of the project. He wrote a short summary describing the original goals and says he is now looking for somebody motivated to take on the project.

    Extensions and specifications

    Developers and other standards experts from around the world collaborate on these extensions, developing new specifications for emerging practices, and refining existing ways of doing things. Proposed by anybody, the particularly successful ones end up as Final or Active - depending on their type - while others are carefully archived as Deferred. This life cycle is described in XEP-0001 , which contains the formal and canonical definitions for the types, states, and processes. Read more about the standards process .

    Updated

    • Version 2.11.0 of XEP-0004 (Data Forms)
      • Further clarify the presence requirements for the type attribute on fields.

    Last Call

    Last calls are issued once everyone seems satisfied with the current XEP status. After the Council decides whether the XEP seems ready, the XMPP Editor issues a Last Call for comments. The feedbacks gathered during the Last Call help improving the XEP before returning it to the Council for advancement to Draft.

    Proposed Extensions

    The XEP development process starts by writing up an idea and submitting it to the XMPP Editor. Within two weeks, the Council decides whether or not to accept this proposal as an Experimental XEP.

    • XMPP Compliance Suites 2021
      • This document defines XMPP application categories for different use cases (Core, Web, IM, and Mobile), and specifies the required XEPs that client and server software needs to implement for compliance with the use cases.

    Thanks all!

    This XMPP Newsletter is produced collaboratively by the community.

    Thanks to agnauck, emus, mdosch, mwild1, pep., pmaziere, Seve, wurstsalat3000 and zash for their help in creating it!

    Spread the news!

    Please share the news on "social networks":

    Find and place job offers in the XMPP job board .

    Subscribe to the newsletter

    We suggest you Subscribe to receive the next editions in your inbox as soon as it is published! Promote this newsletter to whoever may be interested.

    Help us to build the newsletter

    We started drafting every new issue in the XSF Github repository and we are always happy to welcome contributors. Do not hesitate to join the discussion in our Comm-Team group chat (MUC) and thereby help us sustain this as a community effort.

    You have a project and write about it? Please consider sharing your news or events here, and promote it to a large audience! Even if you can only spend a few minutes, these would already be helpful!

    Tasks which need to be done on a regular basis are for example:

    • Aggregation of news in the XMPP universe
    • Short formulation of news and events
    • Summary of the monthly communication on extensions (XEP)
    • Review of the newsletter draft
    • Preparation for media images
    • Translations: especially German and Spanish

    License

    This newsletter is published under CC BY-SA license .

    • wifi_tethering open_in_new

      This post is public

      xmpp.org /2020/09/newsletter-09-september/

    • chevron_right

      The XMPP Standards Foundation: XMPP bites into the apple!

      emus • news.movim.eu / PlanetJabber • 5 October, 2020 • 6 minutes

    Welcome to the XMPP newsletter covering the month of September 2020.

    Newsletter translations

    Translations of the XMPP Newsletter will be released here:

    XSF Announcements

    The XSF started the application period for its annual XSF Board and XSF Council elections. Applicants for the council must be elected XSF members, while board seats are open to everyone. If you are interested to apply for any of those positions please visit the application page .

    The Q4 2020 XSF membership application period is open as well. If you are interested to become an XSF member you can apply here .

    Articles

    The German blog kuketz-blog.de published part 6 of its messenger series [German] covering the Android client Conversations.

    Tigase published an article on the development of their multiplatform XMPP Library Halcyon written in Kotlin. In another article later this month they wrote on publishing and subscribing via XEP-0060 . And to close this article serie, Tigase explains the STUN & TURN setup with their Tigase XMPP server using XEP-0215 .

    Software news

    Clients and applications

    A new major version of Movim is out, with improved notifications, new video-conferencing, chat features and some major performance overhaul. A new version for the Android application is also available to integrate all those features in the Android environment. Discover all the improvements of this new release on the official release note Movim 0.18 – Oterma . Have a look at Movim’s improved draw widget:

    Movim

    Gajim Development News (September) : this month's post marks one year of Gajim Development News! The rework of Gajim’s preferences window has been completed. We improved group chat invitations and made group chat settings easier to access. Also, joining a group chat is now much prettier.

    MCabber, the venerable old text UI client, has been released in version 1.1.1 and 1.1.2 . Apart from bugfixes, support for displaying the number of unread messages and refactorization of carbon message handling has been implemented.

    The Python SDK for GE WiFi-enabled kitchen appliances, gekitchen , made its first GitHub release. The primary goal is to use it to power integrations for Home Assistant , though that probably needs to wait for some new entity types. It is using XMPP as a mean to authenticate, since it is what the GE SmartHQ app uses to communicate with devices.

    XMPP on iOS and Mac is getting traction after all:

    • Hello BeagleIM 4.0 and SiskinIM 6.0 ! Their iOS and MacOS clients now speak Mediated Information eXchange (MIX) ( XEP-0369, XMPP’s new group chat protocol ). VoIP connectivity has been improved with Jingle Message Initiation ( XEP-0353 ), Last Message Correction ( XEP-0308 ) is available for editing messages which were already sent, and other features like Message Retraction ( XEP-0424 ) and quick replies for quoting were introduced. Support for CAPTCHA forms has been added as well: Extended In-Band Registration ( XEP-0158 ) is invoked for additional verification during account registration. Of course there are many more changes and bugfixes!

    • The iOS and MacOS client Monal got a new push server and received improvements for Message Archive Management. This is one of the many changes to arrive in future releases. Be prepared and get a glimpse in the Monal Beta Testflight .

    Servers

    No chance for SPAM: Openfire presents their new 'Spam blacklist' plugin which enables reporting for users. Everyone, please report potential spammers! Openfire’s monitoring plugin has been released in version 2.1.0, featuring full text search for personal archive messages.

    The Prosody XMPP server team has been busy this month with several exciting things. Firstly, the Prosody 0.11.6 release announcement . They also published a suite of new modules to allow simple invite-based account registration which can help guide new users through choosing a suitable client and registering their first XMPP account. Finally, they published a round-up of advices for everyone on how to help address spam on the XMPP network .

    Prosody

    Libraries

    Libstrophe, a lightweight XMPP client library written in C, released version 0.10.0 which, besides bugfixes and a new API, brings new features: SCRAM-SHA-256 and SCRAM-SHA-512 support, c-ares support, LibreSSL support and global timed handlers that fire periodically regardless of connections status

    There is a new beta online for Smack 4.4.0 (Smack 4.4.0-beta2) , the Ignite RealTime Java XMPP library.

    Other

    Google Summer of Code 2020: Anmol summarized his three months work on In-Band Real Time Texting (RTT) for Dino (XMPP Desktop Client) in a final blog post .

    The owner of the joinxmpp.org domain is lacking time for further development of the project. He wrote a short summary describing the original goals and says he is now looking for somebody motivated to take on the project.

    Extensions and specifications

    Developers and other standards experts from around the world collaborate on these extensions, developing new specifications for emerging practices, and refining existing ways of doing things. Proposed by anybody, the particularly successful ones end up as Final or Active - depending on their type - while others are carefully archived as Deferred. This life cycle is described in XEP-0001 , which contains the formal and canonical definitions for the types, states, and processes. Read more about the standards process .

    Updated

    • Version 2.11.0 of XEP-0004 (Data Forms)
      • Further clarify the presence requirements for the type attribute on fields.

    Last Call

    Last calls are issued once everyone seems satisfied with the current XEP status. After the Council decides whether the XEP seems ready, the XMPP Editor issues a Last Call for comments. The feedbacks gathered during the Last Call help improving the XEP before returning it to the Council for advancement to Draft.

    Proposed Extensions

    The XEP development process starts by writing up an idea and submitting it to the XMPP Editor. Within two weeks, the Council decides whether or not to accept this proposal as an Experimental XEP.

    • XMPP Compliance Suites 2021
      • This document defines XMPP application categories for different use cases (Core, Web, IM, and Mobile), and specifies the required XEPs that client and server software needs to implement for compliance with the use cases.

    Thanks all!

    This XMPP Newsletter is produced collaboratively by the community.

    Thanks to agnauck, emus, mdosch, mwild1, pep., pmaziere, Seve, wurstsalat3000 and zash for their help in creating it!

    Spread the news!

    Please share the news on "social networks":

    Find and place job offers in the XMPP job board .

    Subscribe to the newsletter

    We suggest you Subscribe to receive the next editions in your inbox as soon as it is published! Promote this newsletter to whoever may be interested.

    Help us to build the newsletter

    We started drafting every new issue in the XSF Github repository and we are always happy to welcome contributors. Do not hesitate to join the discussion in our Comm-Team group chat (MUC) and thereby help us sustain this as a community effort.

    You have a project and write about it? Please consider sharing your news or events here, and promote it to a large audience! Even if you can only spend a few minutes, these would already be helpful!

    Tasks which need to be done on a regular basis are for example:

    • Aggregation of news in the XMPP universe
    • Short formulation of news and events
    • Summary of the monthly communication on extensions (XEP)
    • Review of the newsletter draft
    • Preparation for media images
    • Translations: especially German and Spanish

    License

    This newsletter is published under CC BY-SA license .

    • wifi_tethering open_in_new

      This post is public

      xmpp.org /2020/09/newsletter-09-september/

    • chevron_right

      Monal IM: Push server outages

      Anu • news.movim.eu / PlanetJabber • 27 September, 2020

    There have been two outages to the push server in the last two days. We are working on identifying the issue. It is related to some new code we are using that allows text and image previews in messages the Monal 4.8 rolls out. I apologize for the inconvenience the end result will hopefully make it worth it.

    • wifi_tethering open_in_new

      This post is public

      monal.im /blog/push-server-outages/

    • chevron_right

      Gajim: Development News September 2020

      Gajim • news.movim.eu / PlanetJabber • 27 September, 2020 • 4 minutes

    🥳 This month’s post marks one year of Gajim Development News! The rework of Gajim’s Preferences window has been completed. We improved group chat invitations and made group chat settings easier to access. Also, joining a group chat is now much prettier.

    Changes in Gajim

    After reworking Gajim’s configuration backend, it was time to redesign the Preferences window. During this month, a lot of work went into improving the settings framework, which will simplify coding and reduce the amount of code necessary to add new settings. Many of these changes won’t become visible instantly, but they will help future development.

    Gajim’s Notification settings for event handling have been split up. You can now decide if you want notifications to be shown in general, and if you want new message to be opened directly (without a notification icon in the contact list). All settings around sending Chat States (e.g. ‘Composing…') have been moved from the Preferences window to the Accounts window, completing the migration of account-related settings. These are just a few of many improvements which you’ll discover in the next release. These changes should make it easier for you to handle all of Gajim’s configuration possiblities.

    Gajim’s new Preferences window

    Gajim’s new Preferences window

    Gajim uses a ‘Sync Threshold’ setting to decide how many messages should be synchronized when joining a chat. If you set a custom Sync Threshold, please make sure to check the setting after upgrading Gajim, since it could not be migrated.

    Receiving a group chat invitation can sometimes be ambiguous. ‘ Do I really want to join this chat, or should I decline the invitation? ’ In order for you to make an informed decision, Gajim now shows some information about the chat (group chat’s picture, name, and description) before joining. Furthermore, many people want to join public group chats using a different nickname from the one they use for private group chats. Gajim now offers to choose a nickname directly before joining.

    The new Group Chat Invitation window

    The new Group Chat Invitation window

    You already now that many group chat actions (for example Information, Change Nickname…) are shown on group chat ‘pages’. Group chat settings (e.g. Minimize on Close, Show Status Changes) are now organized on a new settings page. This reduces the menu layers needed to click through until you reached the setting you wanted to change, and it also puts all settings in a single place for a better overview.

    By default, Gajim will keep your chat history forever. However, if you want to cleanup your chat history from time to time, Gajim now offers to automatically reduce the amount of baggage you’re carrying with you. Of course it’s you who decides for how long Gajim should keep your chat history.

    Gajim’s features (protocol extensions, called XEPs) are now listed on gajim.org/support/extensions . The table is automatically generated from Gajim’s DOAP (Description of a Project) file, which reduces the amount of maintenance significantly.

    What else happened

    • A/V menu entries are now updated (enabled/disabled) correctly when receiving the contact’s capabilities
    • If Gajim fails to join a group chat, it now offers a Retry button (and also ‘Forget Group Chat’)
    • When pasting images from the clipboard, a preview is shown before sending
    • A ‘Send message’ button is now available for chat windows
    • Notification for contact sign in/out has been removed
    • VCard and Avatar publishing code has been reworked
    • A bug has been fixed where the notification icon would stay after blocking/reporting someone who sent you a subscription request and a message ( #10264 )
    • There have been speed improvements for SQLite operations concerning chat message processing ( #10027 )
    • Escape key will not close chat windows by default in the future
    • Some shortcuts now use Primary (Ctrl/Cmd) instead of Alt (which is often used by Window Management): Change Subject ( <Primary><Shift>S ), Emoji Chooser ( <Primary><Shift>M )

    Plugin updates

    Gajim’s URL Image Preview is now able to preview audio files. If you receive a voice message, you can play it directly from within the chat window. The Syntax Highlighter plugin now features a ‘Paste as Code’/‘Paste as Code Block’ entry for the chat input. ‘Paste as Code’ will surround the text you paste with backticks, which enables syntax highlighting.

    Each chat message shows a little green shield icon if it is encrypted. Colors for these icons have been unified between OMEMO, OpenPGP, and incoming/outgoing messages. Additionally, some issues have been resolved with Gajim’s PGP/OpenPGP plugins on Flatpak.

    Changes in python-nbxmpp

    Support for VCard Temp ( XEP-0054 ) has been added. Furthermore, the code for VCard and Avatar publishing has been reworked. Tasks (using Python Generators) have been introduced, which should simplify the flow of many operations in the future. So far, Pubsub, Avatars, and Discovery are using Tasks.

    As always, feel free to join gajim@conference.gajim.org to discuss with us.

    Gajim

    • wifi_tethering open_in_new

      This post is public

      gajim.org /post/2020-09-27-development-news-september/

    • chevron_right

      Jabber.org Notices: Migration Update

      Jabber.org Notices • news.movim.eu / PlanetJabber • 25 September, 2020

    This morning's migration of the conference.jabber.org groupchat service was a success. We are now planning the migration of end-user accounts and we will post again when we are ready to complete that task.
    • wifi_tethering open_in_new

      This post is public

      www.jabber.org /notices.html

    • chevron_right

      Tigase Blog: Publishing and Subscribing with Halcyon

      Tigase Blog • news.movim.eu / PlanetJabber • 24 September, 2020 • 5 minutes

    Publishing and Subscribing with Halcyon

    As you recall, Halcyon is multiplatform XMPP library written in Kotlin. In a previous article: “A look at Halcyon” we had a look at basic concepts in library and we created a simple client.

    This time we will dive into more complex stuff. We will create simple solution to monitoring temperature at home :-) In this article we will not focus on measuring temperature. We will create a command-line tool to publish temperature provided as parameter.

    First letter in XMPP acronym is from the word “eXtensible”. There is a lot of extensions for the XMPP protocol. One of them is XEP-0060: Publish-Subscribe - specification for publish-subscribe functionality. We will use it to create our temperature monitor.

    You need to use XMPP Server with PubSub component. You can use your deployment (for example Tigase XMPP Server or use one of the publicly available servers, for example sure.im and its PubSub component pubsub.sure.im . A PubSub node with unique name (to avoid conflicts) will have to be created in the PubSub component. Please note that node created with default configuration is open, which means that everyone can subscribe to it (but only you will be able to publish data there).

    Data structure

    First of all we have to create data structure. In our case, it will be as simple as possible:

    <temperaturetimestamp="1597946187562">23.8</temperature>

    timestamp is time represented as a number of milliseconds after January 1, 1970 00:00:00 GMT.

    We can use DSL (defined in Halcyon) to create such XML fragment:

    val payload =element("temperature"){    attributes["timestamp"]=(Date()).time.toString()+temperature.toString()}

    Publisher

    Publisher is a simple XMPP client that connects to the server, sends information to PubSub component and immediately disconnects.

    First of all, lets define global values to keep node name and PubSUB JID:

    val PUBSUB_JID ="pubsub.tigase.org".toJID()val PUBSUB_NODE ="temperature_in_my_house"

    It cannot be called a good practice, but is good enough for us right now :-)

    In the previous article we explained how to create a simple client. Now we will focus on PubSubModule . This module allows publishing and receiving events as well as managing PubSub nodes and subscriptions.

    This is the main code that publishes events:

    pubSubModule.publish(PUBSUB_JID, PUBSUB_NODE,null, payload).handle{    success { request, iq, result ->println("YAY! Published with id=${result!!.id}")}    error { request, iq, errorCondition, s ->        System.err.println("ERROR $errorCondition! $s")}}.send()

    But what if the PubSub node doesn’t exist (e.g. it wasn’t created yet)? It’s simple: we have to create it using method create() :

    pubSubModule.create(PUBSUB_JID, PUBSUB_NODE).handle{    success { _: IQRequest<Unit>, _: IQ, _: Unit?->println("Got it! Node created!")}    error { _: IQRequest<PubSubModule.PublishingInfo>, _: IQ?, errorCondition: ErrorCondition, msgs: String?->println("OOPS! Cannot create node $errorCondition$msgs")}}.send()

    The question is: under what conditions we should call this part of code and automatically create the node? One of the possibilities would be moment when item publishing fails with error item-not-found .

    pubSubModule.publish(PUBSUB_JID, PUBSUB_NODE,null, payload).handle{    success { request, iq, result ->println("YAY! Published with id=${result!!.id}")}    error { request, iq, errorCondition, s ->if(errorCondition == ErrorCondition.ItemNotFound){println("Node not found! We need to create it!")            pubSubModule.create(PUBSUB_JID, PUBSUB_NODE).handle{                success { _: IQRequest<Unit>, _: IQ, _: Unit?->println("Got it! Node created!")}                error { _: IQRequest<PubSubModule.PublishingInfo>, _: IQ?, errorCondition: ErrorCondition, msgs: String?->println("OOPS! Cannot create node $errorCondition$msgs")}}.send()}else System.err.println("ERROR $errorCondition! $s")}}.send()

    To simplify the code, publishing will not be repeated after node creation.

    It is good to use client.waitForAllResponses() before disconnect() , to not break connection before all responses comes back.

    Listener

    Listener is also a client (it should works on different account) that subscribes to receiving events from specific nodes of PubSub component. PubSub items received by PubSubModule are distributed in the client as PubSubEventReceivedEvent in Event Bus. To receive those events you have to register an events listener:

    client.eventBus.register<PubSubEventReceivedEvent>(PubSubEventReceivedEvent.TYPE){if(it.pubSubJID == PUBSUB_JID && it.nodeName == PUBSUB_NODE){        it.items.forEach{ item ->val publishedContent = item.getFirstChild("temperature")!!val date =Date(publishedContent.attributes["timestamp"]!!.toLong())val value = publishedContent.value!!println("Received update: $date :: $value°C")}}}

    Note, that this listener will be called on every received PubSub event (like OMEMO keys distribution, PEP events, etc). That’s why you need to check node name and JabberID of PubSub component.

    Your client will not receive anything from PubSub if it does not subscribe to specific node. Because subscription is persistent (at least with default node configuration), client doesn’t need to subscribe every time it connects to the server. Though, it should be able to check if it’s subscribed to the specific node or not. For that, you need to retrieve list of subscribers and see if the JabberID of the client is on the list:

    val myOwnJID = client.getModule<BindModule>(BindModule.TYPE)!!.boundJID!!pubSubModule.retrieveSubscriptions(PUBSUB_JID, PUBSUB_NODE).response{if(!it.get()!!.any{ subscription -> subscription.jid.bareJID == myOwnJID.bareJID }){println("We have to subscribe")        pubSubModule.subscribe(PUBSUB_JID, PUBSUB_NODE, myOwnJID).send()}}.send()

    NOTE: In this example we intentionally skipped checking response errors.

    PubSub component can keep some history of published elements. We can retrieve that list easily:

    pubSubModule.retrieveItem(PUBSUB_JID, PUBSUB_NODE).response{when(it){is IQResult.Success ->{println("Previously published temperatures:")            it.get()!!.items.forEach{val date =Date(it.content!!.attributes["timestamp"]!!.toLong())val value = it.content!!.value!!println(" - $date :: $value°C")}}is IQResult.Error ->println("OOPS! Error "+ it.error)}}.send()

    Length of the history is defined in node configuration.

    Sample output

    Submitting new temperature in Publisher …: publishing

    yields receiving notifications in Listener : listening

    Summary

    We presented a simple way to create a PubSub publisher and consumer. You can extend it: for example you can run publisher on Raspberry Pi connected to some meteo-sensors. Possible applications of PubSub component are limited only by your imagination.

    All source codes for this article can be found in GitHub repository .

    • wifi_tethering open_in_new

      This post is public

      tigase.net /halcyon-publishing-and-subscribing-with-halcyon/

    • chevron_right

      Prosodical Thoughts: Simple Anti-Spam Tips

      The Prosody Team • news.movim.eu / PlanetJabber • 22 September, 2020

    You can take it as a sign of success of a network when it becomes worthwhile for spammers to set up camp. If you’re an active user of XMPP, there is a chance you’ve been unfortunate enough to receive spam in recent weeks.Spam has always been an occasional issue on the network, as with any network, website or internet service. However a few years ago spammers really started to take things more seriously on XMPP.
    • wifi_tethering open_in_new

      This post is public

      blog.prosody.im /simple-anti-spam-tips/

    • chevron_right

      Jabber.org Notices: Groupchat Migration

      Jabber.org Notices • news.movim.eu / PlanetJabber • 22 September, 2020

    This Friday, 2020-09-25, starting around 14:30 UTC, your admin team plans to migrate the conference.jabber.org groupchat service to a new machine and server software. If all goes well the downtime will be limited to ~30 minutes or less. Please note that this will not affect one-to-one chats, only groupchat rooms. Thanks for your patience.
    • wifi_tethering open_in_new

      This post is public

      www.jabber.org /notices.html