Skip to content

Instantly share code, notes, and snippets.

@tianchaijz
Last active October 13, 2018 09:36
Show Gist options
  • Save tianchaijz/cd263e2119fa8e527ea22dbf093da331 to your computer and use it in GitHub Desktop.
Save tianchaijz/cd263e2119fa8e527ea22dbf093da331 to your computer and use it in GitHub Desktop.
package main
import (
"flag"
"log"
"net/url"
"os"
"os/signal"
"time"
"github.com/gorilla/websocket"
)
var addr = flag.String("addr", "127.0.0.1:3114", "epoch websocket address")
func loop() {
u := url.URL{Scheme: "ws", Host: *addr, Path: "/websocket"}
log.Printf("connecting to %s", u.String())
c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
if err != nil {
log.Fatal("dial:", err)
}
defer c.Close()
log.Println("connected")
c.WriteMessage(websocket.TextMessage, []byte("{\"payload\":{\"type\":\"mined_block\"},\"target\":\"chain\",\"action\":\"subscribe\"}"))
for {
c.SetReadDeadline(time.Now().Add(time.Duration(30) * time.Minute))
_, message, err := c.ReadMessage()
if err != nil {
log.Println("read:", err)
return
}
log.Printf("recv: %s", message)
}
}
func main() {
flag.Parse()
log.SetFlags(0)
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
go func() {
<-interrupt
os.Exit(1)
}()
for {
loop()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment