私はSwift Vaporフレームワークを検討しています。Swift Vaporで非同期的に作成されたボディチャンクを持つレスポンスボディを生成する方法
SSLリンクで取得したデータをサードパーティシステム(Asterisk PBXサーバー..)にマップするコントローラクラスを、レスポンスボディに作成しようとしています。レスポンスボディは、クライアントに送信されます。
「完全応答」が構築されるのを待たずに、受け取ったテキスト行(SSL接続で別途取得)を送信する必要があります。私はそれを移動するための方法かもしれないと思った
return Response(status: .ok) { chunker in
for name in ["joe\n", "pam\n", "cheryl\n"] {
sleep(1)
try chunker.send(name)
}
try chunker.close()
}
:
この例を見て。
しかし、蒸気サーバーに接続すると、3つの回線が結果として受信される前に、REST呼び出しがループを完了するのを待つことになります。
私はどのようにしてchunker.send(name)を試してみると、最初にループが完了するのを待たずに文字をクライアントに送り返すことができますか?
実際のコードでは、コントローラメソッドはクライアントへのHTTP接続を長期間開いたままにして、Asteriskアクティビティデータを取得するとすぐにクライアントに送信する可能性があります。つまり、各.send(name)は実際には最後の.close()呼び出しを待つことなく、すぐにクライアントにデータを渡すべきです。トライchunker.flushを追加
()が任意のより良い結果を生成しませんでした。..
こんにちは!あなたのメモに感謝します。私が発見したのは、チャンクが実際に動作することです。 PawとPostmanの両方がシグナルの流れを示すのに十分親切ではなかったことだけです。 – aaberga
Safari、otoh、すべてのことが表示されます。そして、はい、WebSocketはこの種のアプリケーションでより意味を成しています。しかし今は、Vaporが無料で(実際には安全なTelnetスタイルのリンクでAsteriskに接続する)SSLソケットをテストするための素早いものを探していました。 – aaberga
私はGETコールをSafari WebページにプロキシされたリモートPBXからSSLデータフローを取得する1時間以上持続させることができました。本当のことは明らかにウェブソケットに移行します!しかし、蒸気の中のすべてのおいしいものに感謝!! – aaberga