最近项目需要,利用websocket实现PHP对ws协议的请求,这里PHP是作为一个客户端通过ws协议请求服务,而不是作为服务端,这个首先要区分下。
ws协议是websocket的东西,现在也有很多东西可以实现,如workerman、swoole,但是说实话,看到workerman的文档,有介绍怎么实现这个功能,但是个人是感觉真的很头疼,一切都是基于cli,基本都是用到命令行去执行,一个类似curl请求获取结果的功能还要去捣鼓这些东西,真是呵呵哒。swoole就不说了,首先Windows都不支持(当然,现在基本都是用Linux,但是个人感觉不是很通用)。
网上找了很多资料,说实话百度的东西都是扯淡的,越看越让你心烦,最后翻墙去Google终于找到方法了,实现的办法也很简单,几句代码就解决了,当然websocket类库还是要的(这个可能个人能力有限,百度没找到)。
先说明,这里是基于thinkPHP5来实现的,不过基本流程都是差不多的
把下载下来的websocket类库放到vendor,然后引用Client.php文件
vendor("websocket.lib.Client");
$data='{"id":"1".....}';请求数据
$url="ws://xxx:9009"; //服务地址
$client=new \WebSocket\Client($url); //实例化
$client->send($data); //发送数据
$result=$client->receive(); //接收数据
$client->close();//关闭连接
基本就是这几行代码,当然,当时用的时候,websocket引用会有一些小问题,具体的看问题解决即可
这里提供下websocket类库的下载,说实话,这个还是用Google找到的(可能个人的搜索不到位)