簡體   English   中英

res.send 令牌然后重定向

[英]res.send token and then redirect

我有一個快速應用程序,它在調用 get 請求時立即返回一個字符串令牌,然后運行一個 python 代碼。 一段時間后,python 代碼創建了一個 json 文件,我需要在另一個 post 請求中發送該文件。

這個 python 代碼可能會被不同的用戶調用,這就是為什么我需要在調用應用程序時立即為他們分配一個令牌。 在發布請求中,我還將修改 json 文件,然后將其發回

我正在嘗試 res.send 令牌,然后 res.redirect 到發布請求,但我知道這是不可能的。 有沒有其他方法可以發送令牌或重定向到發布請求?

app.get('/', (req, res) =>{
     res.send(token())
     runPython((code)=>{ 

     *takes around 10 sec*

       res.redirect('/post')}}

app.post('/post', (req, res)=>{

     *do stuff to file*

     res.sendFile()

您不能在時間上分開地將多個響應發送回客戶端。 你得到一個 http 響應。 所以,一旦你完成了res.send(token()) ,那么那個 http 請求就完成了。 作為該 http 請求的一部分,您不能再發送任何數據。

在您描述事物時,以下是您的一些選擇:

  1. 將兩者合並為一個響應。 等待發送令牌,直到您也有 python 響應,然后將它們都發送到一個 JSON 響應中。 如果您還要發回數據,您將無法執行res.redirect() 因此,您可以將重定向位置發送回 JSON,並讓客戶端手動執行重定向(只需將window.location設置為新 URL)。 據推測,無論如何,在接收端都有客戶端 Javascript,因為某種形式的代碼無論如何都必須接收令牌才能用它做一些有用的事情。

  2. 使用 websocket/socket.io 連接進行后續服務器啟動的通信。 讓客戶端連接 webSocket 或 socket.io 連接。 然后,您可以使用令牌進行響應,然后在 Python 完成后,您可以通過 websocket 或 socket.io 連接發送其他數據。 這將需要額外的代碼才能將特定的 websocket/socket.io 連接與發出此請求的客戶端相關聯,以便您可以判斷此請求要通過哪個 websocket/socket.io 連接發送通知。

  3. 用於完成python操作的客戶端輪詢。 讓服務器發回令牌並向其發送某種請求 ID,然后客戶端可以每隔幾秒鍾輪詢服務器以詢問服務器該請求 ID 的 Python 操作現在是否已完成。 當它從服務器得到 python 已經完成的響應時,客戶端可以手動將自己重定向到/post以獲取最終數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM