mirror of
https://github.com/FluuxIO/go-xmpp.git
synced 2024-11-21 01:52:01 -08:00
Native Go XMPP library
af0ae525b8
"An IQ stanza of type "get" or "set" MUST contain exactly one child element, which specifies the semantics of the particular request." |
||
---|---|---|
_examples | ||
cmd/xmpp-check | ||
.gitignore | ||
auth.go | ||
backoff_test.go | ||
backoff.go | ||
check_cert.go | ||
client_test.go | ||
client.go | ||
CODE_OF_CONDUCT.md | ||
codecov.yml | ||
codeship-services.yml | ||
codeship-steps.yml | ||
codeship.env.encrypted | ||
component_test.go | ||
component.go | ||
config.go | ||
conn_error.go | ||
CONTRIBUTING.md | ||
doc.go | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
iot_control_test.go | ||
iot_control.go | ||
iq_test.go | ||
iq.go | ||
jid_test.go | ||
jid.go | ||
LICENSE | ||
message_test.go | ||
message.go | ||
msg_chat_markers.go | ||
msg_chat_state.go | ||
msg_oob.go | ||
msg_receipts_test.go | ||
msg_receipts.go | ||
ns.go | ||
packet.go | ||
parser.go | ||
pep.go | ||
presence_test.go | ||
presence.go | ||
pubsub.go | ||
README.md | ||
registry_test.go | ||
registry.go | ||
router_test.go | ||
router.go | ||
session.go | ||
socket_proxy.go | ||
starttls.go | ||
stream_manager.go | ||
stream_test.go | ||
stream.go | ||
tcp_server_mock.go | ||
test.sh | ||
xmpp_test.go |
Fluux XMPP
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. Fluux XMPP supports:
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