Giter Site home page Giter Site logo

noahshen / go-xmpp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xmppo/go-xmpp

0.0 1.0 0.0 110 KB

go xmpp library (original was written by russ cox )

Home Page: http://golang.org/

License: BSD 3-Clause "New" or "Revised" License

Go 100.00%

go-xmpp's Introduction

go-xmpp

  • Forked from mattn/go-xmpp
  • It's a wrapper of mattn/go-xmpp
  • Support add user-define handler and reconnect after ping failed

Installation

go get github.com/NoahShen/go-xmpp

// use in your .go code:
import (
    "github.com/NoahShen/go-xmpp"
)

Usage

xmpp.Debug = true // print stanza xml
xmppClient := xmpp.NewXmppClient(xmpp.ClientConfig{true, 3, 30 * time.Second, true, 5})
err := xmppClient.Connect(server, username, password)
...
// use default handler, also you can define your own handler which must implements xmpp.Handler
connErrorHandler := xmpp.NewConnErrorHandler()
xmppClient.AddHandler(connErrorHandler)

chathandler := xmpp.NewChatHandler()
xmppClient.AddHandler(chathandler)

subscribeHandler := xmpp.NewSubscribeHandler()
xmppClient.AddHandler(subscribeHandler)


roster := xmppClient.RequestRoster()
...
xmppClient.Send(&Presence{})

for {
	select {
	case event := <-connErrorHandler.GetEventCh():
		fmt.Printf("Event catch: connection error: %v, msg: %s\n", event.Error, event.Message)
	case event := <-chathandler.GetEventCh():
		msg := event.Stanza.(*xmpp.Message)
		xmppClient.SendChatMessage(msg.From, "echo "+msg.Body)
		xmppClient.SendPresenceStatus("echo " + msg.Body)
	case subEvent := <-subscribeHandler.GetEventCh():
		subPresence := subEvent.Stanza.(*xmpp.Presence)
		fmt.Println("****" + subPresence.From + " request to add me as a contact")
		subscribed := &Presence{
			To:   subPresence.From,
			Type: "subscribed",
		}
		xmppClient.Send(subscribed)
	}
}

go-xmpp's People

Contributors

collosi avatar kissaki avatar mattn avatar mementor avatar noahshen avatar sushimako avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.