Skip to content

Instantly share code, notes, and snippets.

@andreadipersio
Last active December 28, 2015 11:29
Show Gist options
  • Save andreadipersio/7493430 to your computer and use it in GitHub Desktop.
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

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