Skip to content

Instantly share code, notes, and snippets.

@andreadipersio
Last active December 28, 2015 11:29
Show Gist options
  • Select an option

  • Save andreadipersio/7493430 to your computer and use it in GitHub Desktop.

Select an option

Save andreadipersio/7493430 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"log"
"flag"
"net/http"
)
var (
port int
)
func visitServer(visitChan chan bool) {
var visits int
for {
if <-visitChan {
visits++
log.Printf("%v visits", visits)
}
}
}
type withChanHandler struct {
visitChan chan bool
}
func (h *withChanHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
h.visitChan <-true
fmt.Fprint(w, "Hello, World!")
}
func init() {
flag.IntVar(&port, "port", 8080, "HTTP Server Port")
flag.Parse()
}
func main() {
var visitChan = make(chan bool)
go visitServer(visitChan)
httpAddr := fmt.Sprintf(":%v", port)
log.Printf("Listening to %v", httpAddr)
http.Handle("/", &withChanHandler{visitChan,})
log.Fatal(http.ListenAndServe(httpAddr, nil))
}
@levpaul
Copy link
Copy Markdown

levpaul commented Nov 22, 2013

This is awesome!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment