An implementation of the Extensible Messaging and Presence Protocol (XMPP) in Go. https://mellium.im
Go to file
Sam Whited 261fddaeaf
design: clarify some parts of pubsub notify
Several questions came up in a design review with the NLNet folks that
have been fixed by this patch.

Signed-off-by: Sam Whited <sam@samwhited.com>
2023-12-18 07:50:20 -05:00
.woodpecker .woodpecker: always build examples 2023-08-27 07:18:45 -04:00
blocklist blocklist: add reporting integration test 2023-01-05 09:56:48 -05:00
bookmarks bookmarks: add ability to delete a bookmark 2022-03-06 08:49:04 -05:00
carbons carbons: add Private method 2021-11-24 07:25:12 -05:00
color color: remove deprecated type in example 2021-03-08 20:42:54 -05:00
commands all: generate disco features 2021-08-11 19:30:28 -04:00
component component: ensure stream namespace is set 2022-05-19 08:56:59 -04:00
crypto crypto: implement types for trust messages 2023-06-19 18:11:07 -04:00
delay stanza: add NSClient and NSServer constants 2021-11-09 07:06:16 -05:00
design design: clarify some parts of pubsub notify 2023-12-18 07:50:20 -05:00
dial dial: fix dialing connections without implicit TLS 2023-10-30 09:36:12 -04:00
disco disco: run integration tests against Jackal 2022-08-14 20:02:44 -04:00
docs docs: minor typo fixes 2023-07-29 13:10:20 -04:00
examples all: add handling of see-other-host errors 2023-08-27 08:57:12 -04:00
form form: remove reference to for loop variable 2022-03-17 10:09:51 -04:00
forward forward: test Unwrap when errors are expected 2021-11-12 10:45:56 +00:00
history all: don't log XML in integration tests 2022-08-18 06:45:36 -04:00
ibb ibb: run integration tests against Jackal 2022-08-14 20:06:42 -04:00
internal all: add handling of see-other-host errors 2023-08-27 08:57:12 -04:00
jid jid: disable allocation test 2023-08-18 07:49:34 -04:00
muc muc: fix implicit memory aliasing 2023-08-22 08:14:10 -04:00
mux mux: ignore chardata in IQs 2022-08-14 08:56:15 -04:00
oob all: run gofmt for Go 1.19 doc comments 2022-06-19 07:33:19 -04:00
paging paging: ensure index is an attribute 2021-08-18 09:22:30 -04:00
ping ping: run integration tests against Jackal 2022-08-14 20:00:19 -04:00
pubsub internal/genpubsub: update condition names 2023-01-15 05:55:35 -05:00
receipts stanza: add NSClient and NSServer constants 2021-11-09 07:06:16 -05:00
roster roster: run integration tests against Jackal 2022-08-14 20:04:21 -04:00
s2s s2s: add bidi implementation 2021-01-17 11:26:20 -05:00
stanza stanza: always unmarshal error conditions 2023-01-13 10:51:39 -05:00
stream stream: remove `InnerXML()` 2023-08-27 08:57:45 -04:00
styling all: run gofmt for Go 1.19 doc comments 2022-06-19 07:33:19 -04:00
upload upload: new package implementing HTTP upload 2022-08-15 13:16:56 -04:00
uri uri: better error handling in tests 2021-06-24 09:41:19 -04:00
version version: add software version requests handler 2023-01-06 17:27:17 +02:00
websocket websocket: rewrite WebSocket lookups 2022-02-21 07:32:48 -05:00
x509 all: update copyright message 2018-02-17 21:19:29 -06:00
xtime internal/integration/jackal: add modules option 2022-08-18 06:49:17 -04:00
.gitignore styling: add tool to export tests 2021-11-10 20:29:46 -05:00
CHANGELOG.md stream: remove `InnerXML()` 2023-08-27 08:57:45 -04:00
CONTRIBUTORS all: add new contributors 2023-08-27 06:54:51 -04:00
DCO .builds: add DCO check 2020-02-21 00:23:55 -05:00
LICENSE docs: rename LICENSE file 2018-08-17 12:15:31 -05:00
LICENSE-GO all: add Go license 2019-07-19 18:28:39 -05:00
Makefile pubsub: generate condition types 2023-01-05 20:23:28 -05:00
README.md all: update build status badge in readme 2022-07-15 08:35:13 -04:00
bind.go xmpp: add UpdateAddr to set JID during bind 2022-08-22 11:49:01 -04:00
bind_test.go xmpp: use correct namespace on bind response 2022-04-17 07:57:22 -04:00
conn.go xmpp: fix ineffectual assignment in teeConn 2021-06-24 09:52:04 -04:00
doc.go all: run gofmt for Go 1.19 doc comments 2022-06-19 07:33:19 -04:00
echobot_example_test.go xmpp: make STARTTLS always required 2020-05-08 08:30:21 -04:00
error_test.go xmpp: implement server side of SASL 2021-01-14 08:00:13 -05:00
export_test.go xmpp: add tests for sending stanzas 2019-06-18 11:43:32 -05:00
features.go xmpp: add informational stream features API 2022-02-16 07:48:30 -05:00
go.mod all: update dependencies 2023-02-24 11:52:02 -05:00
go.sum all: update dependencies 2023-02-24 11:52:02 -05:00
handler.go all: allow encoding structs from within handlers 2019-07-23 13:05:14 -05:00
handler_test.go all: add missing copyright notices 2020-03-29 19:40:12 -04:00
negotiator.go stanza: add NSClient and NSServer constants 2021-11-09 07:06:16 -05:00
sasl.go all: rename saslerr.Failure to "Error" 2022-12-31 08:37:32 -05:00
sasl_integration_test.go all: update build tags for Go 1.17 2021-06-24 20:24:37 -04:00
sasl_test.go all: rename saslerr.Failure to "Error" 2022-12-31 08:37:32 -05:00
send_test.go xmpp: fix an error in UnmarshalIQ 2021-07-29 10:12:29 -04:00
session.go internal/ns: remove ns.WS constant 2023-01-02 06:49:26 -05:00
session_iq.go xmpp: return start token for iter IQ payloads 2021-07-31 09:59:27 -04:00
session_message.go stanza: add NSClient and NSServer constants 2021-11-09 07:06:16 -05:00
session_message_test.go xmpp: add Message and Presence send methods 2021-07-02 11:39:13 -04:00
session_presence.go stanza: add NSClient and NSServer constants 2021-11-09 07:06:16 -05:00
session_presence_test.go xmpp: add Message and Presence send methods 2021-07-02 11:39:13 -04:00
session_test.go internal/stream: remove s2s bool from stream send 2021-09-24 10:41:54 -04:00
sessionstate_string.go xmpp: implement fmt.Stringer for SessionState 2021-02-25 09:14:04 -05:00
starttls.go xmpp: return better errors during StartTLS 2023-01-01 09:40:13 -05:00
starttls_test.go xmpp: fix test broken by recent StartTLS changes 2023-01-02 06:57:16 -05:00
tools.go all: update build tags for Go 1.17 2021-06-24 20:24:37 -04:00

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.