An implementation of the Extensible Messaging and Presence Protocol (XMPP) in Go. https://mellium.im
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Sam Whited acca6c3e70
.woodpecker: use alpine:edge for integration tests
4 days ago
.builds .builds: update checkdoc tool location 4 weeks ago
.woodpecker .woodpecker: use alpine:edge for integration tests 4 days ago
blocklist all: run gofmt for Go 1.19 doc comments 2 months ago
bookmarks bookmarks: add ability to delete a bookmark 5 months ago
carbons carbons: add Private method 9 months ago
color color: remove deprecated type in example 1 year ago
commands all: generate disco features 1 year ago
component component: ensure stream namespace is set 3 months ago
crypto crypto: add ability to get a hash from a string 6 months ago
delay stanza: add NSClient and NSServer constants 9 months ago
design crypto: new package 6 months ago
dial dial: implement support for ALPN as per XEP-0368 8 months ago
disco disco: use the new crypto package for caps 6 months ago
docs all: update GitHub references to Codeberg 1 month ago
examples all: update GitHub references to Codeberg 1 month ago
form form: remove reference to for loop variable 5 months ago
forward forward: test Unwrap when errors are expected 9 months ago
history stanza: implement default message type 5 months ago
ibb ibb: add API to listen for specific connections 3 months ago
ibr2 ibr2: deprecate old package 2 months ago
internal internal/integration/prosody: run as root 1 month ago
jid all: run gofmt for Go 1.19 doc comments 2 months ago
muc all: run gofmt for Go 1.19 doc comments 2 months ago
mux mux: ignore whitespace when iterating 5 months ago
oob all: run gofmt for Go 1.19 doc comments 2 months ago
paging paging: ensure index is an attribute 12 months ago
ping ping: run integration tests against slixmpp 6 months ago
pubsub pubsub: use provided IQ in DeleteIQ 5 months ago
receipts stanza: add NSClient and NSServer constants 9 months ago
roster all: move XML subset tracking into stream.Reader 7 months ago
s2s s2s: add bidi implementation 2 years ago
stanza stanza: fix minor typo in docs 2 weeks ago
stream all: run gofmt for Go 1.19 doc comments 2 months ago
styling all: run gofmt for Go 1.19 doc comments 2 months ago
uri uri: better error handling in tests 1 year ago
version all: generate disco features 1 year ago
websocket websocket: rewrite WebSocket lookups 6 months ago
x509 all: update copyright message 5 years ago
xtime stanza: add NSClient and NSServer constants 9 months ago
.gitignore styling: add tool to export tests 9 months ago
CHANGELOG.md ibr2: deprecate old package 2 months ago
CONTRIBUTORS xmpp: use correct namespace on bind response 4 months ago
DCO .builds: add DCO check 3 years ago
LICENSE docs: rename LICENSE file 4 years ago
LICENSE-GO all: add Go license 3 years ago
Makefile .builds: fix deadlock in CI on CONTRIBUTORS file 8 months ago
README.md all: update build status badge in readme 4 weeks ago
bind.go xmpp: use correct namespace on bind response 4 months ago
bind_test.go xmpp: use correct namespace on bind response 4 months ago
conn.go xmpp: fix ineffectual assignment in teeConn 1 year ago
doc.go all: run gofmt for Go 1.19 doc comments 2 months ago
echobot_example_test.go xmpp: make STARTTLS always required 2 years ago
error_test.go xmpp: implement server side of SASL 2 years ago
export_test.go xmpp: add tests for sending stanzas 3 years ago
features.go xmpp: add informational stream features API 6 months ago
go.mod all: update the Go language version to 1.18 6 days ago
go.sum compress: remove the legacy compression package 4 months ago
handler.go all: allow encoding structs from within handlers 3 years ago
handler_test.go all: add missing copyright notices 2 years ago
negotiator.go stanza: add NSClient and NSServer constants 9 months ago
sasl.go xmpp: support stream features that use IQs 2 years ago
sasl_integration_test.go all: update build tags for Go 1.17 1 year ago
sasl_test.go all: move XML subset tracking into stream.Reader 7 months ago
send_test.go xmpp: fix an error in UnmarshalIQ 1 year ago
session.go xmpp: minimize lock contention on handlers 7 months ago
session_iq.go xmpp: return start token for iter IQ payloads 1 year ago
session_message.go stanza: add NSClient and NSServer constants 9 months ago
session_message_test.go xmpp: add Message and Presence send methods 1 year ago
session_presence.go stanza: add NSClient and NSServer constants 9 months ago
session_presence_test.go xmpp: add Message and Presence send methods 1 year ago
session_test.go internal/stream: remove s2s bool from stream send 11 months ago
sessionstate_string.go xmpp: implement fmt.Stringer for SessionState 1 year ago
starttls.go all: update default TLS config to use TLS >= 1.2 1 year ago
starttls_test.go internal/stream: remove s2s bool from stream send 11 months ago
tools.go all: update build tags for Go 1.17 1 year ago

README.md

XMPP

GoDoc Chat License Build Status CII Best Practices

An Extensible Messaging and Presence Protocol (XMPP) library in Go. XMPP (sometimes known as "Jabber") is a protocol for near-real-time data transmission, most commonly used for instant messaging, video chat signaling, and related functionality. This library aims to provide general protocol support with additional packages that focus on modern instant messaging use cases.

This library supports instant messaging features such as:

  • Individual and group chat,
  • Blocking and unblocking users,
  • Forms and commands (eg. for controlling bots and gateways),
  • Retrieving message history,
  • General publish-subscribe semantics for storing state and data,
  • Parsing simple text styling (eg. bold, italic, quotes, etc.),
  • and more!

To use it in your project, import it (or any of its other packages) like so:

import mellium.im/xmpp

If you're looking to get started and need some help, see the API docs or look in the examples/ tree for several simple usage examples.

If you'd like to contribute to the project, see CONTRIBUTING.md.

License

The package may be used under the terms of the BSD 2-Clause License a copy of which may be found in the file "LICENSE". Some code in this package has been copied from Go and is used under the terms of Go's modified BSD license, a copy of which can be found in the LICENSE-GO file.

Unless you explicitly state otherwise, any contribution submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.