A Redis-backed notification server written in Go
Latest commit e3e06bf Jan 26, 2015 @johnernaut Merge pull request #6 from Polyconseil/config
Load config from common directories



A Redis-backed notification server written in Go.

Build Status

Client library: goatee.js


go get github.com/johnernaut/goatee

import "github.com/johnernaut/goatee"


goatee works by listening on a channel via Redis Pub/Sub and then sending the received message to connected clients via WebSockets. Clients may create channels to listen on by using the goatee client library.


goatee will look for a JSON configuration file in a config folder at the root of your project with the following names based on your environment: development.json, production.json, etc. By default config/development.json will be used but you can also specify a GO_ENV environment variable and the name of that will be used instead.

// example json configuration
// specify redis and websocket hosts
  "redis": {
    "host": "localhost:6379"
  "web": {
    "host": "localhost:1235"


package main

import (

func main() {
    // subscribe to one or many redis channels
    err := goatee.CreateServer()

    if err != nil {
        log.Fatal("Error: ", err.Error())


An example of how to use the goatee client library can be found in the examples folder.


With goatee running and your web browser connected to the socket, you should now be able to test message sending from Redis to your client (browser). Run redis-cli and publish a message to the channel you subscribed to in your Go server. By default, goatee expects your Redis messages to have a specified JSON format to send to the client with the following details:

  • payload
  • created_at (optional)

E.x. publish 'mychannel' '{"payload": "mymessage which is a string, etc."}'


go test github.com/johnernaut/goatee