GolangでWebsocketでReceiveで一定時間を経過したらデータを送る
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)
}