Browse Source

update readme

master
tooooommy 5 years ago
parent
commit
cd9da9eeaf
  1. 43
      README.md
  2. BIN
      examples/broadcast/broadcast
  3. 13
      examples/broadcast/main.go
  4. 13
      examples/sub-pub/main.go

43
README.md

@ -22,6 +22,49 @@ your way so you can write real-time apps. Features include:
go get gopkg.in/olahol/melody.v1
```
## [Example: sub/pub](https://)
```go
package main
import (
"log"
"melody"
"github.com/gin-gonic/gin"
)
func main() {
m := melody.New()
router := gin.Default()
router.GET("/chat", func(context *gin.Context) {
if err := m.HandleRequest(context.Writer, context.Request); err != nil {
log.Println(err)
}
})
m.HandleConnect(func(session *melody.Session) {
ch := session.Request.URL.Query().Get("channel")
if err := session.Subscribe(ch); err != nil {
log.Println(err)
}
})
m.HandleMessage(func(session *melody.Session, msg []byte) {
if err := session.Publish(msg); err != nil {
log.Println(err)
}
})
m.HandleSentMessage(func(session *melody.Session, bytes []byte) {
log.Printf("%+v", session.Channel().Online())
log.Printf("%+v", string(bytes))
})
router.Run(":8080")
}
```
## [Example: chat](https://github.com/olahol/melody/tree/master/examples/chat)
[![Chat](https://cdn.rawgit.com/olahol/melody/master/examples/chat/demo.gif "Demo")](https://github.com/olahol/melody/tree/master/examples/chat)

BIN
examples/broadcast/broadcast

13
examples/broadcast/main.go

@ -21,12 +21,21 @@ func main() {
if err := session.Subscribe(ch); err != nil {
log.Println(err)
}
session.Set("channel", ch)
})
m.HandleMessage(func(session *melody.Session, msg []byte) {
if err := session.Publish(msg); err != nil {
log.Println(err)
channel, ok1 := session.Get("channel")
if ok1 {
_ = m.BroadcastFilter(msg, func(s *melody.Session) bool {
ch, ok2 := s.Get("channel")
if ok2 && ch.(string) == channel.(string) {
return true
}
return false
})
}
})
m.HandleSentMessage(func(session *melody.Session, bytes []byte) {

13
examples/channel/main.go → examples/sub-pub/main.go

@ -21,21 +21,12 @@ func main() {
if err := session.Subscribe(ch); err != nil {
log.Println(err)
}
session.Set("channel", ch)
})
m.HandleMessage(func(session *melody.Session, msg []byte) {
channel, ok1 := session.Get("channel")
if ok1 {
_ = m.BroadcastFilter(msg, func(s *melody.Session) bool {
ch, ok2 := s.Get("channel")
if ok2 && ch.(string) == channel.(string) {
return true
}
return false
})
if err := session.Publish(msg); err != nil {
log.Println(err)
}
})
m.HandleSentMessage(func(session *melody.Session, bytes []byte) {
Loading…
Cancel
Save