5

$env->{'psgix.io'}私のアプリケーションは、さらなる WebSocket 処理のために別のプロセスにハンドルを渡したいと考えています。UNIX ソケットdup()のハンドルを介して渡すので、アプリケーションから PSGI サーバーに応答を返す必要はありません。しかし、アプリケーションからの応答を返さずに、黙って接続を閉じるオプションはありません。何も返さないと、PSGI サーバーは満足せず、「500 Internal Server Error」をログに記録します。のようなコード参照だけを返すとsub {}、Twiggy は満足しますが、uWSGI はそうではありません。他の有効な PSGI 回答は、WebSocket プロトコルを破ります。

WebSocketハンドシェイクの最後の部分をPSGIの回答として生で処理して返そうとしdup()ましたが、uWSGIでは機能しましたが、Twiggyでは機能しませんでした。

私はさまざまな PSGI/WebSocket 実装を調べましたが、次のいずれかを実行します。

  1. WebSocket が閉じられるまで、ハンドラーからまったく戻らないでください。
  2. ある種のを返しsub {}ます。

PSGIプロトコルで応答を返さず、静かに接続を閉じる正しい方法は何ですか?

更新: Twiggy がPSGI キャンセルメッセージ[]として使用しているようです。同じことを行うための私のパッチは正常にマージされました。uwsgi

4

0 に答える 0