You can not 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
Mickael Remond cc2fa7307f
Ignore directory where I put private notes
5 years ago
_examples Update Fluux XMPP version for examples 5 years ago
cmd/xmpp-check Move examples out of the cmd directory 5 years ago
.gitignore Ignore directory where I put private notes 5 years ago
CODE_OF_CONDUCT.md Add CoC and contribution guide 5 years ago
CONTRIBUTING.md Add CoC and contribution guide 5 years ago
Dockerfile Run tests on Golang 1.12 5 years ago
LICENSE Moving XMPP library to Fluux project 6 years ago
README.md Update README.md 5 years ago
auth.go Add router to make it easier to set up routing info 5 years ago
backoff.go Add Client Manager to monitor connection state and trigger reconnect (#39) 5 years ago
backoff_test.go Add Client Manager to monitor connection state and trigger reconnect (#39) 5 years ago
check_cert.go Clean up and fix StartTLS feature discovery 5 years ago
client.go Add basic support for keep-alive (#48) 5 years ago
client_test.go Clean up and fix StartTLS feature discovery 5 years ago
codecov.yml Disable Codecov comments on PR 5 years ago
codeship-services.yml Add Codecov support 6 years ago
codeship-steps.yml Workaround Codeship coverage upload report issues 6 years ago
codeship.env.encrypted Add missing codecov token 6 years ago
component.go Introduce Sender interface to abstract client sending in router handlers 5 years ago
component_test.go Fix import and test 5 years ago
config.go Use StreamClient interface in StreamManager 5 years ago
conn_error.go Handling basic unrecoverable errors 5 years ago
doc.go Move project to gosrc.io/xmpp 5 years ago
go.mod Move examples out of the cmd directory 5 years ago
go.sum Move examples out of the cmd directory 5 years ago
iot_control.go Add router to make it easier to set up routing info 5 years ago
iot_control_test.go Fix filename 5 years ago
iq.go Add router to make it easier to set up routing info 5 years ago
iq_test.go wrong package import url let it failed 5 years ago
jid.go Add helpers to access full / bare jid as string 5 years ago
jid_test.go Add helpers to access full / bare jid as string 5 years ago
message.go Expose type registry for custom user-defined payload and extensions 5 years ago
message_test.go Refactor / clean up registry 5 years ago
msg_chat_markers.go fix chat markers - id is a attribute not element 5 years ago
msg_chat_state.go Add typing support: XEP-0085: Chat State Notifications 5 years ago
msg_oob.go Expose type registry for custom user-defined payload and extensions 5 years ago
msg_receipts.go fix chat markers - id is a attribute not element 5 years ago
msg_receipts_test.go Refactor / clean up registry 5 years ago
ns.go Move project to gosrc.io/xmpp 5 years ago
packet.go Move project to gosrc.io/xmpp 5 years ago
parser.go Add Client Manager to monitor connection state and trigger reconnect (#39) 5 years ago
pep.go fix import after moving 5 years ago
presence.go Parse show, status, and priority of presence stanzas as child elements instead of attributes 5 years ago
presence_test.go Update presence_test.go 5 years ago
registry.go Expose type registry for custom user-defined payload and extensions 5 years ago
registry_test.go Refactor / clean up registry 5 years ago
router.go Introduce Sender interface to abstract client sending in router handlers 5 years ago
router_test.go Introduce Sender interface to abstract client sending in router handlers 5 years ago
session.go Clean up and fix StartTLS feature discovery 5 years ago
socket_proxy.go Add tool to check XMPP certificate on starttls 5 years ago
starttls.go Clean up and fix StartTLS feature discovery 5 years ago
stream.go Add router to make it easier to set up routing info 5 years ago
stream_manager.go Introduce Sender interface to abstract client sending in router handlers 5 years ago
stream_test.go Add support for detecting Stream Management 5 years ago
tcp_server_mock.go Move project to gosrc.io/xmpp 5 years ago
test.sh Add test (and refactor them) for PR#15 (#18) 5 years ago
xmpp_test.go Update xmpp_test.go 5 years ago

README.md

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,
	}

	client, err := xmpp.NewClient(config)
	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.NewClientManager(client, nil)
	err = cm.Start()
	if err != nil {
		log.Fatal(err)
	}

	// Iterator to receive packets coming from our XMPP connection
	for packet := range client.Recv() {
		switch packet := packet.(type) {
		case xmpp.Message:
			_, _ = fmt.Fprintf(os.Stdout, "Body = %s - from = %s\n", packet.Body, packet.From)
			reply := xmpp.Message{PacketAttrs: xmpp.PacketAttrs{To: packet.From}, Body: packet.Body}
			_ = client.Send(reply)
		default:
			_, _ = fmt.Fprintf(os.Stdout, "Ignoring packet: %T\n", packet)
		}
	}
}

Documentation

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