your #1 source of programming antipatterns
Go to file
2019-06-18 15:01:21 +02:00
_examples Update examples dependencies 2019-06-18 14:39:58 +02:00
cmd/xmpp-check Move examples out of the cmd directory 2019-06-08 11:34:09 +02:00
.gitignore Ignore directory where I put private notes 2019-06-18 14:36:56 +02:00
auth.go Add router to make it easier to set up routing info 2019-06-18 14:36:56 +02:00
backoff_test.go Add Client Manager to monitor connection state and trigger reconnect (#39) 2019-06-06 11:58:50 +02:00
backoff.go Add Client Manager to monitor connection state and trigger reconnect (#39) 2019-06-06 11:58:50 +02:00
check_cert.go Clean up and fix StartTLS feature discovery 2019-06-10 16:27:52 +02:00
client_test.go Fix client tests 2019-06-18 14:36:56 +02:00
client.go Make client use the new Router 2019-06-18 14:36:56 +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 Add support for generating delegation forwarded iq response 2019-06-18 14:36:56 +02:00
component.go Clean-up 2019-06-18 14:36:56 +02:00
config.go Use StreamClient interface in StreamManager 2019-06-09 13:08:25 +02:00
conn_error.go Handling basic unrecoverable errors 2019-06-07 15:23:23 +02:00
CONTRIBUTING.md Add CoC and contribution guide 2019-01-21 16:24:26 +01:00
doc.go Move project to gosrc.io/xmpp 2018-12-26 18:50:01 +01:00
Dockerfile Run tests on Golang 1.12 2019-06-04 18:59:34 +02:00
go.mod Move examples out of the cmd directory 2019-06-08 11:34:09 +02:00
go.sum Move examples out of the cmd directory 2019-06-08 11:34:09 +02:00
iot_control_test.go Fix filename 2019-06-07 16:00:58 +02:00
iot_control.go Add router to make it easier to set up routing info 2019-06-18 14:36:56 +02:00
iq_test.go wrong package import url let it failed 2019-06-18 08:58:39 +02:00
iq.go Add router to make it easier to set up routing info 2019-06-18 14:36:56 +02:00
jid_test.go Add helpers to access full / bare jid as string 2019-06-07 16:25:18 +02:00
jid.go Add helpers to access full / bare jid as string 2019-06-07 16:25:18 +02:00
LICENSE Moving XMPP library to Fluux project 2018-01-01 18:12:33 +01:00
message_test.go Refactor / clean up registry 2019-06-04 18:47:44 +02:00
message.go Expose type registry for custom user-defined payload and extensions 2019-06-05 10:23:18 +02:00
msg_chat_markers.go fix chat markers - id is a attribute not element 2019-06-07 09:24:00 +02:00
msg_chat_state.go Add typing support: XEP-0085: Chat State Notifications 2019-06-07 09:25:13 +02:00
msg_oob.go Expose type registry for custom user-defined payload and extensions 2019-06-05 10:23:18 +02:00
msg_receipts_test.go Refactor / clean up registry 2019-06-04 18:47:44 +02:00
msg_receipts.go fix chat markers - id is a attribute not element 2019-06-07 09:24:00 +02:00
ns.go Move project to gosrc.io/xmpp 2018-12-26 18:50:01 +01:00
packet.go Move project to gosrc.io/xmpp 2018-12-26 18:50:01 +01:00
parser.go Add Client Manager to monitor connection state and trigger reconnect (#39) 2019-06-06 11:58:50 +02:00
pep.go Add support for generating delegation forwarded iq response 2019-06-18 14:36:56 +02:00
presence_test.go Update presence_test.go 2019-05-16 18:03:44 +02:00
presence.go Parse show, status, and priority of presence stanzas as child elements instead of attributes 2019-02-09 14:18:37 +00:00
pubsub.go Add support for generating delegation forwarded iq response 2019-06-18 14:36:56 +02:00
README.md Add link to examples directory. 2019-06-18 15:01:21 +02:00
registry_test.go Refactor / clean up registry 2019-06-04 18:47:44 +02:00
registry.go Expose type registry for custom user-defined payload and extensions 2019-06-05 10:23:18 +02:00
router_test.go Introduce Sender interface to abstract client sending in router handlers 2019-06-18 14:36:56 +02:00
router.go Add support for delegation namespace packet parsing 2019-06-18 14:36:56 +02:00
session.go Clean up and fix StartTLS feature discovery 2019-06-10 16:27:52 +02:00
socket_proxy.go Add tool to check XMPP certificate on starttls 2019-05-16 17:48:53 +02:00
starttls.go Clean up and fix StartTLS feature discovery 2019-06-10 16:27:52 +02:00
stream_manager.go Introduce Sender interface to abstract client sending in router handlers 2019-06-18 14:36:56 +02:00
stream_test.go Add support for detecting Stream Management 2019-06-10 16:36:47 +02:00
stream.go Add router to make it easier to set up routing info 2019-06-18 14:36:56 +02:00
tcp_server_mock.go Move project to gosrc.io/xmpp 2018-12-26 18:50:01 +01: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:

  • For automation (like for example monitoring of an XMPP service),
  • For building connected "things" by plugging them on an XMPP server,
  • For writing simple chatbot to control a service or a thing.
  • For writing XMPP servers components (See XEP-0114)

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{PacketAttrs: xmpp.PacketAttrs{To: msg.From}, Body: msg.Body}
	_ = s.Send(reply)
}

Documentation

Please, check GoDoc for more information: gosrc.io/xmpp