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
genofire d9fdff0839
Add constants (enumlike) for stanza types and simplify packet creation (#62)
5 years ago
_examples Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
cmd/xmpp-check Fix installation note 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 constants (enumlike) for stanza types and simplify packet creation (#62) 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 Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
client.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
client_test.go An IQ can only have a single payload 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 Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
component_test.go An IQ can only have a single payload 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
error.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
error_enum.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
iot_control.go With go modules, we should be able to remove import comments 5 years ago
iot_control_test.go An IQ can only have a single payload 5 years ago
iq.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
iq_test.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 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
message.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
message_test.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
msg_chat_markers.go With go modules, we should be able to remove import comments 5 years ago
msg_chat_state.go With go modules, we should be able to remove import comments 5 years ago
msg_oob.go With go modules, we should be able to remove import comments 5 years ago
msg_receipts.go With go modules, we should be able to remove import comments 5 years ago
msg_receipts_test.go Refactor / clean up registry 5 years ago
ns.go With go modules, we should be able to remove import comments 5 years ago
packet.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
packet_enum.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
parser.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
pep.go With go modules, we should be able to remove import comments 5 years ago
presence.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
presence_enum.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
presence_test.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
pubsub.go With go modules, we should be able to remove import comments 5 years ago
registry.go With go modules, we should be able to remove import comments 5 years ago
registry_test.go With go modules, we should be able to remove import comments 5 years ago
router.go Add StanzaType matcher / Clarify empty route behaviour (#65) 5 years ago
router_test.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
session.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
socket_proxy.go With go modules, we should be able to remove import comments 5 years ago
starttls.go With go modules, we should be able to remove import comments 5 years ago
stream.go With go modules, we should be able to remove import comments 5 years ago
stream_manager.go Add constants (enumlike) for stanza types and simplify packet creation (#62) 5 years ago
stream_test.go Add support for detecting Stream Management 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
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