$env->{'psgix.io'}
私のアプリケーションは、さらなる WebSocket 処理のために別のプロセスにハンドルを渡したいと考えています。UNIX ソケットdup()
のハンドルを介して渡すので、アプリケーションから PSGI サーバーに応答を返す必要はありません。しかし、アプリケーションからの応答を返さずに、黙って接続を閉じるオプションはありません。何も返さないと、PSGI サーバーは満足せず、「500 Internal Server Error」をログに記録します。のようなコード参照だけを返すとsub {}
、Twiggy は満足しますが、uWSGI はそうではありません。他の有効な PSGI 回答は、WebSocket プロトコルを破ります。
WebSocketハンドシェイクの最後の部分をPSGIの回答として生で処理して返そうとしdup()
ましたが、uWSGIでは機能しましたが、Twiggyでは機能しませんでした。
私はさまざまな PSGI/WebSocket 実装を調べましたが、次のいずれかを実行します。
- WebSocket が閉じられるまで、ハンドラーからまったく戻らないでください。
- ある種のを返し
sub {}
ます。
PSGIプロトコルで応答を返さず、静かに接続を閉じる正しい方法は何ですか?
更新: Twiggy がPSGI キャンセルメッセージ[]
として使用しているようです。同じことを行うための私のパッチは正常にマージされました。uwsgi