mirror of
https://github.com/FluuxIO/go-xmpp.git
synced 2024-11-22 18:42:02 -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 | ||
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 (See XEP-0114)
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,
}
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