Ecosyste.ms: Packages

An open API service providing package, version and dependency metadata of many open source software ecosystems and registries.

Top 6.8% on proxy.golang.org
Top 1.2% dependent packages on proxy.golang.org
Top 1.5% dependent repos on proxy.golang.org

proxy.golang.org : mellium.im/xmpp

Package xmpp provides functionality from the Extensible Messaging and Presence Protocol, sometimes known as "Jabber". This module is subdivided into several packages. This package provides functionality for establishing an XMPP session, feature negotiation (including an API for defining your own stream features), and handling events. Other important packages include the jid package, which provides an implementation of the XMPP address format, the mux package which provides an XMPP handler that can multiplex payloads to other handlers and functionality for creating your own multiplexers, and the stanza package which provides functionality for transmitting XMPP primitives and errors. There are 9 functions for establishing an XMPP session. Their names are matched by the regular expression: If "Dial" is present it means the function uses sane defaults to dial a TCP connection before negotiating an XMPP session on it. Most users will want to call DialClientSession or DialServerSession to create a client-to-server (c2s) or server-to-server (s2s) connection respectively. These methods are the most convenient way to quickly start a connection. If control over DNS or HTTP-based service discovery is desired, the user can use the dial package to create a connection and then use one of the other session negotiation functions for full control over session initialization. If "New" or "Dial" is present in the function name it indicates that the session is from the initiating entities perspective while "Receive" indicates the receiving entity. If "Client" or "Server" are present they indicate a C2S or S2S connection respectively, otherwise the function takes a Negotiator and an initial session state to determine the type of session to create. This also lets the user create the XMPP session over something other than a TCP socket; for example a Unix domain socket or an in-memory pipe. It even allows the use of a different session negotiation protocol altogether such as the WebSocket subprotocol from the websocket package, or the Jabber Component Protocol from the component package. The default Negotiator and related functions use a list of StreamFeature's to negotiate the state of the session. Implementations of the most commonly used features (StartTLS, SASL-based authentication, and resource binding) are provided. Custom stream features may be created using the StreamFeature struct. StreamFeatures defined in this module are safe for concurrent use by multiple goroutines and may be created once and then re-used. Unlike HTTP, the XMPP protocol is asynchronous, meaning that both clients and servers can accept and send requests at any time and responses are not always required or may be received out of order. This is accomplished with two XML streams: an input stream and an output stream. To receive XML on the input stream, Session provides the Serve method which takes a handler that has the ability to read incoming XML. If the full stream should be read it also provides the TokenReader method which takes control of the stream (preventing Serve from calling its handlers) and allows for full control over the incoming stream. To send XML on the output stream, Session has a TokenWriter method that returns a token encoder that holds a lock on the output stream until it is closed. Writing individual XML tokens can be tedious and error prone. The stanza package contains functions and structs that aid in the construction of message, presence and info/query (IQ) elements which have special semantics in XMPP and are known as "stanzas". There are 16 methods on Session used for transmitting stanzas and other events over the output stream. Their names are matched by the regular expression: There are also four methods specifically for sending IQs and handling their responses. Their names are matched by: If "Send" is present it means that the method copies one XML token stream into the output stream, while "Encode" indicates that it takes a value and marshals it into XML. If "IQ" is present it means that the stream or value contains an XMPP IQ and the method blocks waiting on a response. If "Element" is present it indicates that the stream or struct is a payload and not the full element to be transmitted and that it should be wrapped in the provided start element token or stanza. For SendIQ and related methods to correctly handle IQ responses, and to make the common case of polling for incoming XML on the input stream—and possibly writing to the output stream in response—easier, we need a long running goroutine. Session includes the Serve method for starting this processing. Serve provides a Handler with access to the stream but prevents it from advancing the stream beyond the current element and always advances the stream to the end of the element when the handler returns (even if the handler did not consume the entire element). It isn't always practical to put all of your logic for handling elements into a single function or method, so the mux package contains an XML multiplexer that can be used to match incoming payloads against a pattern and delegate them to individual handlers. Packages that implement extensions to the core XMPP protocol will often provide handlers that are compatible with types defined in the mux package, and options for registering them with the multiplexer.

Registry - Source - Documentation - JSON
purl: pkg:golang/mellium.im/xmpp
License: BSD-2-Clause
Latest release: over 1 year ago
First release: over 6 years ago
Namespace: mellium.im
Dependent packages: 17
Dependent repositories: 13
Stars: 4 on Codeberg.org
Forks: 2 on Codeberg.org
See more repository details: repos.ecosyste.ms
Last synced: 21 days ago

Top 9.8% on proxy.golang.org
github.com/singpolyma/xmpp-certwatch v0.0.0-20231023172725-4619cbfca74f
1 version - Latest release: 7 months ago
github.com/singpolyma/xmpp-mitm-monitor v0.0.0-20231023153916-80ba96357f5b
1 version - Latest release: 7 months ago - 0 stars on GitHub
Top 7.3% on proxy.golang.org
mellium.im/xmpp/examples v0.0.0-20230827125745-04f676e8abb1
An implementation of the Extensible Messaging and Presence Protocol (XMPP) in Go.
14 versions - Latest release: 9 months ago - 6 stars on Codeberg.org
Top 7.8% on proxy.golang.org
github.com/XaviFP/gofra v0.0.0-20230418143216-e47341bf438d
XMPP bot engine written in Go.
3 versions - Latest release: about 1 year ago - 2 stars on GitHub
mellium.im/legacy v0.0.0-20230112141526-2de8dec13009
Legacy XMPP functionality that has been pulled out of the main xmpp module or is still useful but...
2 versions - Latest release: over 1 year ago - 5 dependent packages - 3 dependent repositories - 0 stars on Codeberg.org
Top 8.2% on proxy.golang.org
go.deuill.org/informbot v0.0.0-20221029151702-0e5a2fc2d5a0
1 version - Latest release: over 1 year ago
Top 7.9% on proxy.golang.org
mellium.im/communique v0.0.0-20220409122728-823dbf34ebef 💰
The communiqué command is an instant messaging client with a terminal user interface. Communiqué...
1 version - Latest release: about 2 years ago - 9 stars on GitHub
Top 8.2% on proxy.golang.org
github.com/horazont/prometheus-xmpp-blackbox-exporter v0.6.0
A Prometheus blackbox-like thing to probe XMPP services
10 versions - Latest release: over 2 years ago - 8 stars on GitHub
Top 8.2% on proxy.golang.org
github.com/horazont/xmpp-blackbox-exporter v0.6.0
A Prometheus blackbox-like thing to probe XMPP services
10 versions - Latest release: over 2 years ago - 8 stars on GitHub
Top 8.2% on proxy.golang.org
dev.sum7.eu/genofire/unified-push-xmpp/gateway v0.0.0-20210921093456-612d577b21c9
3 versions - Latest release: over 2 years ago
Top 8.2% on proxy.golang.org
dev.sum7.eu/genofire/unified-push-xmpp/messages v0.0.0-20210921093456-612d577b21c9
1 version - Latest release: over 2 years ago - 2 dependent packages
Top 8.2% on proxy.golang.org
dev.sum7.eu/genofire/unified-push-xmpp/distributor v0.0.0-20210921093456-612d577b21c9
3 versions - Latest release: over 2 years ago
Top 6.4% on proxy.golang.org
github.com/tmsmr/xmpp-webhook/dev/xmpp-dev-stack/recipient v0.0.0-20210228154205-37ae0c43d50a
Multipurpose XMPP-Webhook (Built for DevOps Alerts)
1 version - Latest release: about 3 years ago - 19 stars on GitHub
Top 6.4% on proxy.golang.org
github.com/tmsmr/xmpp-webhook v0.4.0
Multipurpose XMPP-Webhook (Built for DevOps Alerts)
4 versions - Latest release: about 3 years ago - 19 stars on GitHub
Top 8.2% on proxy.golang.org
github.com/opthomas-prime/xmpp-webhook v0.4.0
4 versions - Latest release: about 3 years ago
Top 7.0% on proxy.golang.org
github.com/deuill/informbot v0.0.0-20200410135833-12606dc9b6e6
A Chat Bot for Inform 7 Stories, Built in Go
1 version - Latest release: about 4 years ago - 1 dependent package - 3 stars on GitHub
Top 8.2% on proxy.golang.org
code.soquee.net/avatar v0.0.1
Package avatar contains functions for creating user avatars.
1 version - Latest release: about 5 years ago