2013-10-17 73 views
0

我有一個末日的應用程序,我想獲得客戶端輸入,如下面的僞代碼所示:獲取客戶輸入塊

get '/foo' do 
    "doing some stuff" 
    foo = getInputFromClient 
    foo 
    "continuing to do more stuff" 
    foo = getInputFromClient 
    foo 
    "done" 
end 

這是我想輸出在客戶端看到:

curl http://127.0.0.1:4567/foo #start the request 
doing some stuff 
#Somehow submit "shoop" to Sinatra 
shoop 
continuing to do more stuff 
#Somehow submit "woop" to Sinatra 
woop 
done 

我不能把它分成兩個捲曲調用。我該如何做到這一點?我應該首先使用Sinatra嗎?我必須切換到套接字嗎?

我已閱讀這些otherquestions這似乎有關,我不太熟悉他們談論的內容是否適用於我。對於我的情況或對Google幾個關鍵字簡化其他問題將不勝感激。

+0

爲什麼你不能把它分成兩個cURL調用? –

+0

因爲我想保持這個狀態。我現在意識到這是可能的,但由於某些原因,我的情況是特定的。我會接受你的回答,但是我會注意到,就我的情況而言,我只是想讓兩個程序彼此交談,使用套接字最終變得更實用。 – Seanny123

回答

1

通常我們會寫更多的東西是這樣的:

get '/foo' do 
    ...do something... 
    "done doing foo" 
end 

get '/foo2' do 
    ...do something... 
    "done doing foo2" 
end 

get '/foo3' do 
    ...do something... 
    "done doing foo3" 
end 

而且客戶會看到一個連接握手這樣的:

  1. 連接到/foo
  2. 獲得「完成做富」響應。
  3. 連接到/foo2
  4. 獲得「done doing foo2」的迴應。
  5. 連接到/foo3
  6. 獲得「done doing foo3」的迴應。

客戶端和服務器端都必須編寫一些代碼來處理邏輯。您不能在連接中發送消息回到cURL,讓它返回更多信息,請求更多數據並將其返回。這不是cURL的工作方式,也不是HTTP協議。

有可能在瀏覽器中使用各種技術來來回聊,但cURL不是瀏覽器。