your #1 source of programming antipatterns
Go to file
2019-06-27 09:47:08 +02:00
_examples Examples should use local repository version 2019-06-24 12:24:45 +02:00
cmd/xmpp-check Fix installation note 2019-06-19 11:43:16 +02:00
.gitignore Ignore directory where I put private notes 2019-06-18 14:36:56 +02:00
auth.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
backoff_test.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
backoff.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
check_cert.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
client_test.go An IQ can only have a single payload 2019-06-19 14:03:42 +02:00
client.go Fix crash on send when disconnected 2019-06-26 15:58:42 +02:00
CODE_OF_CONDUCT.md Add CoC and contribution guide 2019-01-21 16:24:26 +01:00
codecov.yml Disable Codecov comments on PR 2019-05-31 19:08:20 +02:00
codeship-services.yml Add Codecov support 2018-01-01 18:57:56 +01:00
codeship-steps.yml Workaround Codeship coverage upload report issues 2018-01-02 16:21:45 +01:00
codeship.env.encrypted Add missing codecov token 2018-01-01 18:59:19 +01:00
component_test.go An IQ can only have a single payload 2019-06-19 14:03:42 +02:00
component.go Fix crash on send when disconnected 2019-06-26 15:58:42 +02:00
config.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
conn_error.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
CONTRIBUTING.md Add CoC and contribution guide 2019-01-21 16:24:26 +01:00
doc.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
Dockerfile Run tests on Golang 1.12 2019-06-04 18:59:34 +02:00
error_enum.go Fix typo in error const enum 2019-06-26 16:21:18 +02:00
error.go Update error.go 2019-06-26 18:31:17 +02:00
go.mod With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
go.sum Move examples out of the cmd directory 2019-06-08 11:34:09 +02:00
iot_control_test.go An IQ can only have a single payload 2019-06-19 14:03:42 +02:00
iot_control.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
iq_test.go Make it possible to extract unknown iq payload, in field Any 2019-06-24 12:24:45 +02:00
iq.go Make it possible to extract unknown iq payload, in field Any 2019-06-24 12:24:45 +02:00
jid_test.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
jid.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
LICENSE Moving XMPP library to Fluux project 2018-01-01 18:12:33 +01:00
message_test.go Add msg.Get method to match and extract message extensions 2019-06-22 18:36:16 +02:00
message.go Implement MUC Presence Extension 2019-06-23 12:21:56 +02:00
msg_chat_markers.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
msg_chat_state.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
msg_html_test.go Initial HTML message support 2019-06-23 15:53:24 +02:00
msg_html.go Initial HTML message support 2019-06-23 15:53:24 +02:00
msg_oob.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
msg_receipts_test.go Refactor / clean up registry 2019-06-04 18:47:44 +02:00
msg_receipts.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
network_test.go Improves IPV6 examples 2019-06-26 14:00:39 +02:00
network.go Adding tests and always use brackets in IPV6 addresses 2019-06-26 12:37:59 +02:00
ns.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
packet_enum.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
packet.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
parser.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
pep.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
pres_muc_test.go Use NullableInt to encode presence history values 2019-06-26 18:31:17 +02:00
pres_muc.go Use NullableInt to encode presence history values 2019-06-26 18:31:17 +02:00
presence_enum.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
presence_test.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
presence.go Implement MUC Presence Extension 2019-06-23 12:21:56 +02:00
pubsub.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
README.md Update README.md 2019-06-27 09:47:08 +02:00
registry_test.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
registry.go Implement MUC Presence Extension 2019-06-23 12:21:56 +02:00
router_test.go Do not export Router.route as it is not supposed to be called directly 2019-06-24 12:24:45 +02:00
router.go Fix error code 2019-06-24 12:24:45 +02:00
session.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
socket_proxy.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
starttls.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
stream_manager.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 2019-06-22 11:13:33 +02:00
stream_test.go Add support for detecting Stream Management 2019-06-10 16:36:47 +02:00
stream.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
tcp_server_mock.go With go modules, we should be able to remove import comments 2019-06-18 16:28:30 +02:00
test.sh Add test (and refactor them) for PR#15 (#18) 2019-02-10 17:53:18 +01:00
xmpp_test.go Update xmpp_test.go 2019-05-16 18:04:09 +02:00

Fluux XMPP

Codeship Status for FluuxIO/xmpp GoDoc GoReportCard codecov

Fluux XMPP is a Go XMPP library, focusing on simplicity, simple automation, and IoT.

The goal is to make simple to write simple XMPP clients and components:

The library is designed to have minimal dependencies. For now, the library does not depend on any other library.

Examples

We have several examples to help you get started using Fluux XMPP library.

Here is the demo "echo" client:

package main

import (
	"fmt"
	"log"
	"os"

	"gosrc.io/xmpp"
)

func main() {
	config := xmpp.Config{
		Address:      "localhost:5222",
		Jid:          "test@localhost",
		Password:     "test",
		PacketLogger: os.Stdout,
		Insecure:     true,
	}

	router := xmpp.NewRouter()
	router.HandleFunc("message", handleMessage)

	client, err := xmpp.NewClient(config, router)
	if err != nil {
		log.Fatalf("%+v", err)
	}

	// If you pass the client to a connection manager, it will handle the reconnect policy
	// for you automatically.
	cm := xmpp.NewStreamManager(client, nil)
	log.Fatal(cm.Run())
}

func handleMessage(s xmpp.Sender, p xmpp.Packet) {
	msg, ok := p.(xmpp.Message)
	if !ok {
		_, _ = fmt.Fprintf(os.Stdout, "Ignoring packet: %T\n", p)
		return
	}

	_, _ = fmt.Fprintf(os.Stdout, "Body = %s - from = %s\n", msg.Body, msg.From)
	reply := xmpp.Message{Attrs: xmpp.Attrs{To: msg.From}, Body: msg.Body}
	_ = s.Send(reply)
}

Reference documentation

The code documentation is available on GoDoc: gosrc.io/xmpp