An implementation of the Extensible Messaging and Presence Protocol (XMPP) in Go. https://mellium.im
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
Sam Whited a9950478c8
ci/woodpecker/push/dco Pipeline was successful Details
ci/woodpecker/push/test Pipeline was successful Details
ci/woodpecker/push/validate Pipeline was successful Details
ci/woodpecker/push/integration Pipeline was successful Details
internal/discover: remove unused variable
Signed-off-by: Sam Whited <sam@samwhited.com>
3 months ago
.woodpecker .woodpecker: fix broken CONTRIBUTORS check 5 months ago
blocklist blocklist: add reporting integration test 5 months ago
bookmarks bookmarks: add ability to delete a bookmark 1 year ago
carbons carbons: add Private method 2 years ago
color color: remove deprecated type in example 2 years ago
commands all: generate disco features 2 years ago
component component: ensure stream namespace is set 1 year ago
crypto crypto: add ability to get a hash from a string 1 year ago
delay stanza: add NSClient and NSServer constants 2 years ago
design design: tweak link text in pubsub_notify 5 months ago
dial dial: implement support for ALPN as per XEP-0368 1 year ago
disco disco: run integration tests against Jackal 10 months ago
docs all: update GitHub references to Codeberg 11 months ago
examples examples/commands: fix build broken by tview 3 months ago
form form: remove reference to for loop variable 1 year ago
forward forward: test Unwrap when errors are expected 2 years ago
history all: don't log XML in integration tests 10 months ago
ibb ibb: run integration tests against Jackal 10 months ago
internal internal/discover: remove unused variable 3 months ago
jid all: run gofmt for Go 1.19 doc comments 12 months ago
muc all: don't log XML in integration tests 10 months ago
mux mux: ignore chardata in IQs 10 months ago
oob all: run gofmt for Go 1.19 doc comments 12 months ago
paging paging: ensure index is an attribute 2 years ago
ping ping: run integration tests against Jackal 10 months ago
pubsub internal/genpubsub: update condition names 5 months ago
receipts stanza: add NSClient and NSServer constants 2 years ago
roster roster: run integration tests against Jackal 10 months ago
s2s s2s: add bidi implementation 2 years ago
stanza stanza: always unmarshal error conditions 5 months ago
stream all: run gofmt for Go 1.19 doc comments 12 months ago
styling all: run gofmt for Go 1.19 doc comments 12 months ago
upload upload: new package implementing HTTP upload 10 months ago
uri uri: better error handling in tests 2 years ago
version version: add software version requests handler 5 months ago
websocket websocket: rewrite WebSocket lookups 1 year ago
x509 all: update copyright message 5 years ago
xtime internal/integration/jackal: add modules option 10 months ago
.gitignore styling: add tool to export tests 2 years ago
CHANGELOG.md stanza: always unmarshal error conditions 5 months ago
CONTRIBUTORS all: add new contributors 5 months ago
DCO .builds: add DCO check 3 years ago
LICENSE docs: rename LICENSE file 5 years ago
LICENSE-GO all: add Go license 4 years ago
Makefile pubsub: generate condition types 5 months ago
README.md all: update build status badge in readme 11 months ago
bind.go xmpp: add UpdateAddr to set JID during bind 9 months ago
bind_test.go xmpp: use correct namespace on bind response 1 year ago
conn.go xmpp: fix ineffectual assignment in teeConn 2 years ago
doc.go all: run gofmt for Go 1.19 doc comments 12 months ago
echobot_example_test.go xmpp: make STARTTLS always required 3 years ago
error_test.go xmpp: implement server side of SASL 2 years ago
export_test.go xmpp: add tests for sending stanzas 4 years ago
features.go xmpp: add informational stream features API 1 year ago
go.mod all: update dependencies 3 months ago
go.sum all: update dependencies 3 months ago
handler.go all: allow encoding structs from within handlers 4 years ago
handler_test.go all: add missing copyright notices 3 years ago
negotiator.go stanza: add NSClient and NSServer constants 2 years ago
sasl.go all: rename saslerr.Failure to "Error" 5 months ago
sasl_integration_test.go all: update build tags for Go 1.17 2 years ago
sasl_test.go all: rename saslerr.Failure to "Error" 5 months ago
send_test.go xmpp: fix an error in UnmarshalIQ 2 years ago
session.go internal/ns: remove ns.WS constant 5 months ago
session_iq.go xmpp: return start token for iter IQ payloads 2 years ago
session_message.go stanza: add NSClient and NSServer constants 2 years ago
session_message_test.go xmpp: add Message and Presence send methods 2 years ago
session_presence.go stanza: add NSClient and NSServer constants 2 years ago
session_presence_test.go xmpp: add Message and Presence send methods 2 years ago
session_test.go internal/stream: remove s2s bool from stream send 2 years ago
sessionstate_string.go xmpp: implement fmt.Stringer for SessionState 2 years ago
starttls.go xmpp: return better errors during StartTLS 5 months ago
starttls_test.go xmpp: fix test broken by recent StartTLS changes 5 months ago
tools.go all: update build tags for Go 1.17 2 years 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.