2011-01-07 8 views
5

Realizo una solicitud asincrónica a un servidor mediante el cliente http de erlang utilizando http:request(get, {Url, []}, [], [{sync, false}, {stream, self}]), donde Url es la URL del servidor. Todo está bien y los datos se obtienen por handle_info en gen_server del proceso que llama al http:request/4. Pero debería recibir un mensaje cuando se interrumpe la conexión y el mensaje stream_end no se recibe. El uso del tiempo de espera no es utilizable para mí, porque el servidor puede responder largo tiempo.Erlang. Solicitud HTTP asíncrona. ¿Cómo saber cuándo se rompe la conexión?

¿Es posible recibir un mensaje sobre una conexión interrumpida en handle_info? Si no es , sugiera una forma de saber cuándo se ha roto la conexión.

Respuesta

6

Para mayor elevación de alta resistencia de peticiones HTTP, utilice iBrowse:

https://github.com/cmullaparthi/ibrowse

Tiene muchas más mandos a girar y girar para solicitudes y es más completa w.r.t. muchas cosas. Si http/httpc no resuelve su problema, vale la pena investigar si va a ibrowse.

+0

Gracias por la respuesta. He intentado usar ibrowse antes. Pero, parece que algo va mal. Escribo el cliente para la API de transmisión de Twitter y cuando uso ibrowse no obtengo nada, por ejemplo - http://pastebin.com/fJNELWJE. Cuando uso el cliente http de erlang, todo funciona. Es decir. muchos mensajes se obtienen –

+0

Su ejemplo funciona aquí, para el registro. –

+0

¿Cuándo puedo obtener mensajes de Twitter? ... porque estoy seguro de que lo enviarán después de la conexión. –

Cuestiones relacionadas