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 c8ded1462f
Fix import path
5 years ago
_examples Mention Namespace Delegation and Privileged Entity support 5 years ago
cmd/xmpp-check Fix import path 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 Mention Namespace Delegation and Privileged Entity support 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 Make client use the new Router 5 years ago
client_test.go Fix client tests 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 Clean-up 5 years ago
component_test.go Add support for generating delegation forwarded iq response 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 Add support for generating delegation forwarded iq response 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
pubsub.go Add support for generating delegation forwarded iq response 5 years ago
registry.go Fix import path 5 years ago
registry_test.go Refactor / clean up registry 5 years ago
router.go Fix import path 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:

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