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 5ed66de79e
Fix tests after refactor
5 years ago
_examples Refactor and move parsing and stanza to a separate package 5 years ago
cmd/xmpp-check Fix installation note 5 years ago
stanza Fix tests after refactor 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 Refactor and move parsing and stanza to a separate package 5 years ago
auth.go Refactor and move parsing and stanza to a separate package 5 years ago
backoff.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
backoff_test.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
check_cert.go Refactor and move parsing and stanza to a separate package 5 years ago
client.go Refactor and move parsing and stanza to a separate package 5 years ago
client_test.go Refactor and move parsing and stanza to a separate package 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 Refactor and move parsing and stanza to a separate package 5 years ago
component_test.go Refactor and move parsing and stanza to a separate package 5 years ago
config.go With go modules, we should be able to remove import comments 5 years ago
conn_error.go With go modules, we should be able to remove import comments 5 years ago
doc.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
go.mod With go modules, we should be able to remove import comments 5 years ago
go.sum Move examples out of the cmd directory 5 years ago
jid.go With go modules, we should be able to remove import comments 5 years ago
jid_test.go With go modules, we should be able to remove import comments 5 years ago
network.go Adding tests and always use brackets in IPV6 addresses 5 years ago
network_test.go Improves IPV6 examples 5 years ago
router.go Refactor and move parsing and stanza to a separate package 5 years ago
router_test.go Refactor and move parsing and stanza to a separate package 5 years ago
session.go Refactor and move parsing and stanza to a separate package 5 years ago
socket_proxy.go With go modules, we should be able to remove import comments 5 years ago
stream_manager.go Refactor and move parsing and stanza to a separate package 5 years ago
stream_test.go Refactor and move parsing and stanza to a separate package 5 years ago
tcp_server_mock.go With go modules, we should be able to remove import comments 5 years ago
test.sh Add test (and refactor them) for PR#15 (#18) 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"
	"gosrc.io/xmpp/stanza"
)

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 stanza.Packet) {
	msg, ok := p.(stanza.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 := stanza.Message{Attrs: stanza.Attrs{To: msg.From}, Body: msg.Body}
	_ = s.Send(reply)
}

Documentation

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