title: Golang Redis PubSub timeout
body: <p>So far I've been doing this:</p>
  
  <pre><code>import (
      _redis "gopkg.in/redis.v3"
      "strconv"
      "time"
  )
  
  type Redis struct {
      Connector   *_redis.Client
      PubSub      *_redis.PubSub
  }
  
  var redis *Redis = nil
  
  func NewRedis() bool {
      if redis == nil {
          redis = new(Redis)
          redis.Connector = _redis.NewClient(&amp;_redis.Options{
              Addr: config.RedisHostname + ":" + strconv.FormatInt(config.RedisPort, 10),
              Password: "",
              DB: 0,
          })
          Logger.Log(nil, "Connected to Redis")
          err := redis.Init()
          if err != nil {
              Logger.Fatal(nil, "Cannot setup Redis:", err.Error())
              return false
          }
          return true
      }
      return false
  }
  
  func (this *Redis) Init() error {
      pubsub, err := this.Connector.Subscribe("test")
      if err != nil {
          return err
      }
      defer pubsub.Close()
      this.PubSub = pubsub
      for {
          msgi, err := this.PubSub.ReceiveTimeout(100 * time.Millisecond)
          if err != nil {
              Logger.Error(nil, "PubSub error:", err.Error())
              err = this.PubSub.Ping("")
              if err != nil {
                  Logger.Error(nil, "PubSub failure:", err.Error())
                  break
              }
              continue
          }
          switch msg := msgi.(type) {
              case *_redis.Message:
                  Logger.Log(nil, "Received", msg.Payload, "on channel", msg.Channel)
          }
      }
      return nil
  }
  </code></pre>
  
  <p>My Connector is a redis.Client, it's working because I was able to publish messages as well.</p>
  
  <p>When I run my program, I get the following error:
  <code>PubSub error: WSARecv tcp 127.0.0.1:64505: i/o timeout</code></p>
  
  <p>Do you have any idea of what I'm doing wrong ? I'm using this package: <a href="https://github.com/go-redis/redis" rel="nofollow">https://github.com/go-redis/redis</a></p>