mirror of
https://github.com/FluuxIO/go-xmpp.git
synced 2024-12-17 14:02:04 -08:00
Native Go XMPP library
_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 | ||
README.md | ||
registry_test.go | ||
registry.go | ||
session.go | ||
socket_proxy.go | ||
starttls.go | ||
stream_manager.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 adhoc XMPP clients:
- 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.
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