Created
April 26, 2016 22:56
-
-
Save nemosupremo/c3abd23f4448b1a7022bf6de0919d61d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"io" | |
"io/ioutil" | |
"log" | |
"net/http" | |
"strings" | |
"time" | |
"github.com/nemothekid/net/http2" | |
) | |
func handler(w http.ResponseWriter, r *http.Request) { | |
if r.Method == "POST" { | |
log.Printf("Received %s post request whose Headers are %v", r.Proto, r.Header) | |
if false { | |
io.Copy(ioutil.Discard, r.Body) | |
} | |
if true { | |
log.Printf("req.Body.Close() start here") | |
err := r.Body.Close() | |
log.Printf("req.Body.Close() here, err=%v\n", err) | |
} | |
if false { | |
time.Sleep(700 * time.Millisecond) | |
} | |
//http.Error(w, error, code) | |
w.WriteHeader(413) | |
b, err := io.Copy(w, strings.NewReader(strings.Repeat("XXXXXX", 4192))) | |
log.Printf("Wrote %d bytes. Error: %v", b, err) | |
return | |
} | |
w.Header().Set("Content-Type", "text/html") | |
w.Write([]byte(` | |
<body> | |
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js"></script> | |
<script> | |
var reqs = 1; | |
$('body').text('Sending ' + reqs + ' requests...'); | |
function send(i) { | |
var el = $('<div class="req">Waiting...</div>').attr('id', i).appendTo('body'); | |
var data = new FormData(); | |
data.append('file', new File([new Blob([new Array(5 * 1024 * 1024).join('0')], {type: 'image/jpeg'})], 'test.jpg')); | |
var done = false; | |
var req = new XMLHttpRequest(); | |
req.onreadystatechange = function(e) { | |
if (done || req.readyState !== 3) return; | |
done = true; | |
el.text('Done. Got ' + req.status); | |
} | |
req.open('POST', '/', true); | |
req.send(data); | |
} | |
for (var i = 0; i < reqs; i++) | |
send(i); | |
</script> | |
</body> | |
`)) | |
} | |
func main() { | |
s := &http.Server{Addr: ":1333", Handler: nil} | |
if e := http2.ConfigureServer(s, nil); e != nil { | |
panic(e) | |
} | |
http.HandleFunc("/", handler) | |
if err := s.ListenAndServeTLS("ssl.crt", ssl.key"); err != nil { | |
log.Fatal(err) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment