2011-01-07 33 views
5

Tôi thực hiện yêu cầu không đồng bộ cho một số máy chủ bằng cách xóa http khách hàng sử dụng http:request(get, {Url, []}, [], [{sync, false}, {stream, self}]), trong đó Url là url của máy chủ. Tất cả đều ổn và dữ liệu được nhận bởi handle_info trong gen_server của quá trình gọi http:request/4. Nhưng tôi sẽ nhận được thông báo khi kết nối bị hỏng và stream_end tin nhắn không có. Sử dụng thời gian chờ không thể sử dụng được cho tôi, bởi vì máy chủ có thể phản hồi thời gian dài.Erlang. Yêu cầu http không đồng bộ. Làm thế nào để biết khi nào kết nối bị hỏng?

Có thể nhận được thông báo về kết nối bị hỏng trong handle_info không? Nếu không, vui lòng đề xuất cách để biết khi nào kết nối bị hỏng?

Trả lời

6

Để biết thêm nặng dỡ bỏ các yêu cầu HTTP, sử dụng ibrowse:

https://github.com/cmullaparthi/ibrowse

Nó có nhiều nút bấm hơn để xoay và lần lượt cho các yêu cầu và hoàn chỉnh hơn w.r.t. nhiều thứ. Nếu http/httpc không giải quyết được vấn đề của bạn, nó rất đáng để điều tra nếu bạn muốn tìm hiểu.

+0

Cảm ơn bạn đã trả lời. Tôi đã cố gắng sử dụng ibrowse trước đây. Nhưng, có vẻ như, có gì đó không ổn. Tôi đang viết ứng dụng khách cho API phát trực tuyến twitter và khi tôi sử dụng ibrowse tôi không nhận được gì, ví dụ: http://pastebin.com/fJNELWJE. Khi tôi sử dụng http khách hàng erlang, tất cả các công trình. I E. nhiều tin nhắn đã có. –

+0

Ví dụ của bạn hoạt động ở đây, để ghi lại. –

+0

khi nào tôi có thể nhận tin nhắn từ twitter? .. vì tôi chắc chắn họ gửi tin nhắn sau khi kết nối. –

Các vấn đề liên quan