Skip to content

Instantly share code, notes, and snippets.

@melekes
Created March 5, 2019 12:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save melekes/9d2c98874737fc949aa93bbca5d9db92 to your computer and use it in GitHub Desktop.
Save melekes/9d2c98874737fc949aa93bbca5d9db92 to your computer and use it in GitHub Desktop.
Example of using Tendermint HTTP client to subscribe for new block headers
package main
import (
"context"
"os"
"os/signal"
"syscall"
"github.com/tendermint/tendermint/libs/log"
tmclient "github.com/tendermint/tendermint/rpc/client"
tmtypes "github.com/tendermint/tendermint/types"
)
func main() {
logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout))
client := tmclient.NewHTTP("tcp://localhost:26657", "/websocket")
client.SetLogger(logger)
err := client.Start()
if err != nil {
logger.Error("Failed to start a client", "err", err)
os.Exit(1)
}
defer client.Stop()
query := "tm.event = 'NewBlockHeader'"
out, err := client.Subscribe(context.Background(), "test", query)
if err != nil {
logger.Error("Failed to subscribe to query", "err", err, "query", query)
os.Exit(1)
}
quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt, syscall.SIGTERM)
for {
select {
case result := <-out:
logger.Info("got new block header",
"height", result.Data.(tmtypes.EventDataNewBlockHeader).Header.Height)
case <-quit:
os.Exit(0)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment