일을하는 어리석은 방법 일지 모르지만 여기에 설명되어 있습니다. 보내고받는 HTTP 요청을 응답 처리에서 분리하려고합니다.파이프에 Network.Socket.ByteString.recv가 발생합니다. (알 수없는 오류)
import Pipes
import qualified Pipes.HTTP as HTTP
import Pipes.Core
import qualified Pipes.ByteString as PB
import Network.Socket (withSocketsDo)
fetch m url = do
req <- lift $ HTTP.parseUrl url
resp <- lift $ HTTP.withHTTP req m return
url' <- respond $ HTTP.responseBody resp
fetch m url'
client :: Client String (Producer PB.ByteString IO()) IO()
client = do
b <- request "http://www.google.com"
lift $ runEffect $ b >-> PB.stdout
main = withSocketsDo $ HTTP.withManager HTTP.tlsManagerSettings $ \m ->
runEffect $ fetch m +>> client
합법적으로 보입니다. 그러나 나는 응답의 일부를 인쇄하고 "Network.Socket.ByteString.recv : failed (Unknown error)"오류가 발생합니다. 다르게해야 할 일은 무엇입니까?
HTTP.withHTTP req m return
이 기능을 사용하면 그것에서 탈출 할당하는 리소스를 할 수 없습니다 단어 with
로 시작 때 대회 (유형에 의해 강제되지 않음)이 있습니다 :
관련 분류 : http://stackoverflow.com/questions/9406463/withfile-vs-openfile – user3237465