go-xmpp/README.md

70 lines
2.2 KiB
Markdown
Raw Normal View History

2019-06-08 10:16:20 -07:00
# Fluux XMPP
2015-12-29 02:49:43 -08:00
2019-05-31 10:10:42 -07:00
[![Codeship Status for FluuxIO/xmpp](https://app.codeship.com/projects/dba7f300-d145-0135-6c51-26e28af241d2/status?branch=master)](https://app.codeship.com/projects/262399) [![GoDoc](https://godoc.org/gosrc.io/xmpp?status.svg)](https://godoc.org/gosrc.io/xmpp) [![GoReportCard](https://goreportcard.com/badge/gosrc.io/xmpp)](https://goreportcard.com/report/fluux.io/xmpp) [![codecov](https://codecov.io/gh/FluuxIO/go-xmpp/branch/master/graph/badge.svg)](https://codecov.io/gh/FluuxIO/go-xmpp)
2016-02-15 09:39:12 -08:00
2018-01-01 09:12:33 -08:00
Fluux XMPP is a Go XMPP library, focusing on simplicity, simple automation, and IoT.
2015-12-29 02:49:43 -08:00
2019-06-18 00:01:07 -07:00
The goal is to make simple to write simple XMPP clients and components:
2015-12-29 02:49:43 -08:00
- For automation (like for example monitoring of an XMPP service),
2015-12-29 02:52:02 -08:00
- For building connected "things" by plugging them on an XMPP server,
- For writing simple chatbot to control a service or a thing.
2019-06-18 00:01:07 -07:00
- For writing XMPP servers components (See [XEP-0114](https://xmpp.org/extensions/xep-0114.html))
2015-12-29 02:52:02 -08:00
2019-06-07 06:40:34 -07:00
The library is designed to have minimal dependencies. For now, the library does not depend on any other library.
2018-12-26 10:29:57 -08:00
## Example
Here is a demo "echo" client:
```go
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
2018-12-26 09:59:40 -08:00
Please, check GoDoc for more information: [gosrc.io/xmpp](https://godoc.org/gosrc.io/xmpp)