php fread无法读取发送结果

CokeTsang

我把原Http请求迁移到了Wss下。

背景:

Nginx转发到Wss 端口1下。
Workerman开启了端口1、2分别用于监听原Http请求与Php主动推送消息。

推送流程:
php调用端口2推到Workerman,Workerman推送到建立连接的客户端,Workerman向php返回发送结果。

工作流程如下:
1.客户端发起处理请求。

客户端请求由Nginx转发到Workerman 端口1。
端口1 Curl 本地Php Url处理。
Curl完成返回结果到客户端。

存在问题:
在第3步时有可能触发到Php的推送流程,此时会推送失败且卡在php fread推送结果。一直无法收到Workerman向php返回发送结果导致超时。求教大佬能给个思路吗。

部分代码:

[attach]745[/attach]

[attach]746[/attach]

3162 1 0
1个回答

walkor

innerWorker是什么协议?push函数用的是text协议,那么innerWorker也必须是text协议才能通讯。

还有就是看到innerWorker的onMessage里有打印,那么调试模式在终端会输出打印,是否有看到打印?
如果没有打印说明没有收到push函数内stream_socket_client的的数据,可能是stream_socket_client连错ip或者端口。

  • CokeTsang 2017-09-01

    innerWorker也是text协议,监听接口跟push连接中的时一致的。

    调试模式下也没有打印出东西。

    stream_socket_client应该是没问题的,因为我把fread注释掉后就会变成正常,也能打印出push的消息了。

    感谢大佬回复。

年代过于久远,无法发表回答
🔝