我在构思微服务下如何通过 websocket 作为交互。
client => http => server => ws/tcp => server2 收到 => server2 通过 unixsocket 投递消息到 work 处理完成后 => 通过 ws 写消息回去 => server 的 ws 收到消息
这个时候 如果正常处理 加工收到的消息, 写入消息到 client 的 fd,close 掉 client 连接 应该是可行的。
client => server(伪代码)=> return
<?php
func add(){
$get= $_REQUEST_PARAMS;
return success("code=>200,data=$get,msg=''");
}
都不需要返回了, server 收到 server2 结果后 fwrite($client_fd,$data); close($client_fd);
<?php
func add(){
$get= $_REQUEST_PARAMS;
(new Ws)->send($get);
}
上面写好奇怪的样子。。 我想实现下面的写法有办法吗(代码直观看着舒服),比如
<?php
func add(){
$get= $_REQUEST_PARAMS;
$res = (new Ws)->send($get);
return success("code=>200,data=$res,msg=''");
}
如果想实现上面这样子,需要在加一个队列(起到 while true 阻塞效果?)。
开辟 1 片内存 $arr[$client_fd] => $data; 数据回来后写入。然后 pop 消息。
这样子就好像成 select 了。。 无时无刻在遍历,有数据在返回,性能问题很大。。
然后好像为了解决问题又引入新的问题。
大佬们给点思路呢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.