Golangでwebsocketを使って、

ある一定時間だけReceiveし、もし、その間になんらかのデータが送られてきたらそのデータについて処理するが、その時間内に何も来なかったら、こちらからデータを送る方法はありますか?

下の例だとずっとReceiveで送られてくるのを待ち続けてしまいます。どうすればいいのでしょうか?

一定時間(例えば5秒間)Receiveする -> もし、その間にデータが送られてきたら -> そのデータを処理する。送られて来なければ、こちらからデータを送る

ということがしたいです。


package main

import (
    "fmt"
    "golang.org/x/net/websocket"
    "io/ioutil"
    "net/http"
    "os"
)

func picHandler(ws *websocket.Conn) {
    websocket.Message.Receive(ws, &s) 
    // なんらかの処理

    // もし、一定時間過ぎたなら
        websocket.Message.Send(ws, pic)
}

func main() {
    if err != nil {
        fmt.Fprintln(os.Stderr, err)
    }
    http.HandleFunc("/pic", func(w http.ResponseWriter, req *http.Request) {
        s := websocket.Server{Handler: websocket.Handler(picHandler)}
        s.ServeHTTP(w, req)

    })
    fmt.Println("port:", 9563)
    http.ListenAndServe(":9563", nil)
}