如何在没有响应的情况下关闭 PSGI 连接?

Ant*_*ich 5 perl websocket psgi

我的应用程序希望将$env->{'psgix.io'}句柄传递给单独的进程以进行进一步的 WebSocket 处理。通过 UNIX socketdup()的句柄传递,所以我真的不关心从应用程序向 PSGI 服务器返回任何答案。但是我看不到在不从应用程序返回任何响应的情况下静默关闭连接的选项。当我什么都不返回时,PSGI 服务器不满意并记录“500 内部服务器错误”。当我只返回像 一样的代码引用时sub {},Twiggy 很高兴,但 uWSGI 不是。任何其他有效的 PSGI 答案都会破坏 WebSocket 协议。

我尝试dup()原始处理并返回 WebSocket 握手的最后一部分作为 PSGI 答案,它与 uWSGI 一起工作,但与 Twiggy 一起工作。

我查看了不同的 PSGI/WebSocket 实现,他们执行以下操作之一:

  1. 在 WebSocket 关闭之前,根本不要从处理程序返回;
  2. 返回某种sub {}.

在 PSGI 协议中不返回答案并静默关闭连接的正确方法是什么?

更新:看起来 Twiggy[]用作PSGI 取消消息。我uwsgi做同样事情的补丁已成功合并。