swoole socket 使用
<?php
//创建websocket服务器对象,监听0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", 9502);
//监听WebSocket连接打开事件
/**
* 客户端想服务器发送信息是调用函数
* $ws websocket 服务器
* $request 客户端信息
* $request->fd 客户端唯一编号
*
* */
$ws->on('open', function ($ws, $request) {
//var_dump($request->fd, $request->get, $request->server);
//$ws->push($request->fd, "hello, welcome\n");
echo "connection open:{$request->fd}\n";
//$ws->push($request->fd, json_encode(['hello','world']));
});
//监听WebSocket消息事件
/**
* $frame 客户端发送的信息
* $frame->fd 客户端的唯一编号
* $frame->data 客户端发送的信息
* */
$ws->on("request", function(swoole_http_request $request, swoole_http_response $response) use($ws){
//遍历所有WebSocket连接用户的fd,给所有用户推送
global $ws;
foreach ($ws->connections as $fd) {
// 需要先判断是否是正确的websocket连接,否则有可能会push失败
if ($ws->isEstablished($fd)) {
$ws->push($fd, $request->post['scene']);
}
}
});
$ws->on('message', function ($ws, $frame) {
//echo "接收到的信息: {$frame->data}\n";
//$ws->push($frame->fd, "server: {$frame->data}");
//echo "服务器已接收:【".$frame->fd."】";
//$ws->push($frame->fd, json_encode(['hello','world'.$frame->data]));
// 1.客户端发送过来的信息
$content = $frame->data;
echo "服务器接收到信息:".$content;
// 2.讲消息发送个所有客户端
foreach ($ws->connections as $fd){
$content = "你好";
$ws->push($fd,$content);
}
});
//监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
echo "client-{$fd} is closed\n";
echo "已断开链接:{$fd}";
});
$ws->start();
?>
function curl($data)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://127.0.0.1:9502");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_exec($curl);
curl_close($curl);
}
function activepush()
{
$param['scene'] = '主动推送消息';
curl($param); // 主动推送消息
}
版权声明:
作者:ForDream
链接:https://ishoud.com/index.php/2021/08/24/106.html
来源:工具人
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
swoole socket 使用
<?php
//创建websocket服务器对象,监听0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", 9502);
//监听WebSocket连接打开事件
/……

共有 0 条评论