技术饭

PHP利用websocket实现客户端请求ws协议功能

copylian    1 评论    18102 浏览    2021.04.02

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 文件后 怎么提示这个