Native Go XMPP library
Go to file
2019-06-18 14:36:56 +02:00
_examples Add namespace delegation and priviledged entity example 2019-06-18 14:36:56 +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 Update example client to use router 2019-06-18 14:36:56 +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.

Example

Here is a 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