【Go】コネクションの読み取りにおけるio.Copyの注意点


connectionの読み込みにio.Copyでハマってしまったので
どなたかの役に立てれば。。

io.Copy

io.Copy の挙動はこちらによると

Copy copies from src to dst until either EOF is reached on src or an error occurs. It returns the number of bytes copied and the first error encountered while copying, if any.

となっており、 EOF もしくは エラー が返るまでcopyしてくれる。

ConnectionにおけるEOF

読み込みを考えると、
connectionがcloseし切断された時に io.EOF が返ってくる。

そのため、io.Copyで読み込む際は送信側でconnectionをClose()している必要がある。