技术饭
PHP利用websocket实现客户端请求ws协议功能
PHP利用websocket实现客户端请求ws协议功能,利用websocket实现PHP对ws协议的请求,这里PHP是作为一个客户端通过ws协议请求服务,而不是作为服务端,这个首先要区分下。
ws协议是websocket的东西,现在也有很多东西可以实现,如workerman、swoole,但是说实话,看到workerman的文档,有介绍怎么实现这个功能,但是个人是感觉真的很头疼,一切都是基于cli,基本都是用到命令行去执行,一个类似curl请求获取结果的功能还要去捣鼓这些东西,真是呵呵哒。swoole就不说了,首先Windows都不支持(当然,现在基本都是用Linux,但是个人感觉不是很通用)。
先说明,这里是基于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找到的(可能个人的搜索不到位)
链接地址:https://github.com/Textalk/websocket-php
如果支持composer的话直接composer下载更加简单:
https://packagist.org/packages/textalk/websocket
案例:
//发送ws信息
$client = new \WebSocket\Client(config('websocket.url') ."?hudong_id=".$params['hudong_id']."&source=yonghu");
$data = json_encode(["router" => "votelist", "hudong_id" => $params['hudong_id']]);
$client->send($data);
echo $client->receive();
$client->close();
文明上网理性发言!
Class 'WebSocket\Base' not found 引用client 文件后 怎么提示这个