我有一個JSON-RPC服務,其中一個請求返回連續的JSON對象流。與Indy的HTTP連續分組流
I.e. :
{id:'1'}
{id:'2'}
//30 minutes of no data
{id:'3'}
//...
當然,沒有內容長度,因爲流是無止境的。
我正在使用自定義TStream後裔來接收和解析數據。但在內部TIdHttp
緩衝數據並不傳遞給我,直到收到RecvBufferSize
字節。
這導致:
{id:'1'} //received
{id:'2'} //buffered by Indy but not received
//30 minutes of no data
{id:'3'} //this is where Indy commits {id:'2'} to me
顯然,這不會做,因爲這要緊31分鐘前的消息應該已經29分鐘前交付。
我想印該怎麼做插座的更多信息:讀取多達RecvBufferSize以內是否有可用的數據並立即返回。
我發現this discussion從2005年一些地方可憐的靈魂試圖解釋問題的Indy開發者,但他們並沒有理解他。 (閱讀它,它是一個可悲的景象)
無論如何,他工作圍繞這通過編寫自定義IOHandler後裔,但是這是早在2005年,也許今天也有一些現成的解決方案?
作爲Indy是開源的,修改過的資源可能(並且,如果對其他人有幫助的話)應該公開 – mjn 2013-04-24 13:03:46
@mjn:不知道,謝謝。添加了代碼。 – himself 2013-04-25 07:49:17