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

时间:2016-08-19 09:02:11

标签: perl websocket psgi

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

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

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

  1. 根本不从处理程序返回,直到WebSocket关闭;
  2. 返回某种sub {}
  3. PSGI协议中没有回答和静默关闭连接的正确方法是什么?

    更新:看起来Twiggy使用[]作为 PSGI取消消息。我uwsgi执行此操作的补丁已成功合并。

0 个答案:

没有答案