Gateway/BusinessWorker不支持非websocket协议吗?

由于历史原因,我需要在Gateway/BusinessWorker模式中提供http协议访问(应该说是类似于http的请求接口),现有workerman虽然是支持的,但是在BusinessWorker中却将$_SERVER全局变量重置了, 这样导致http协议解析到数据丢失了, 最后Event虽然可以得到消息的body,这时需要解析这个body。我想问一下,为什么BusinessWorker中要将$_SERVER重置, 而不是继续添加需要的数据,这样有什么考虑吗?
已邀请:

walkor

赞同来自:

BusinessWorker并没有解析http协议,即使不重置$_SERVER,$_SERVER也是空的,所以不存在所说的 “$_SERVER全局变量重置, 导致http协议解析到数据丢失” 问题。

Http协议decode返回值是原始的http协议数据,所以Event::onMessage($client_id, $data) 中得到的$data就是http原始数据。

我已经更改了http协议decode的返回值为
return array('get'=>$_GET, 'post'=>$_POST, 'cookie'=>$_COOKIE, 'server'=>$_SERVER, 'files'=>$_FILES);


这样你就可以在Event::onMessage($client_id, $data)的$data中获取 get/post/cookie....了

请更新下workerman试下

要回复问题请先登录注册