Swoole接入

2024-01-26 14:31 小编

Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。

本教程以WebSocket为例。


一、安装Swoole4

宝塔面板为例,在php设置中直接可以安装

image.png

二、测试程序脚本

1、在web目录中新建文件/api/sms.php (注意文件名大小写格式)

<?php


/**

 * sms服务端入口文件

 */



define('IS_API', basename(__FILE__, '.php')); // 项目标识

define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); // 该文件的名称

require(dirname(dirname(__FILE__)).'/index.php'); // 引入主文件

2、再到xunruicms的主程序目录建立业务处理文件 /dayrui/My/Api/Sms.php (注意文件名大小写格式)


//创建websocket服务器对象,监听0.0.0.0:9502端口

$ws = new Swoole\WebSocket\Server("0.0.0.0", 9502);


//监听WebSocket连接打开事件

$ws->on('open', function ($ws, $request) {

    var_dump($request->fd, $request->get, $request->server);

    $ws->push($request->fd, "hello, welcome\n");

});


//监听WebSocket消息事件

$ws->on('message', function ($ws, $frame) {

    echo "Message: {$frame->data}\n";

    $ws->push($frame->fd, "server: {$frame->data}");

});


//监听WebSocket连接关闭事件

$ws->on('close', function ($ws, $fd) {

    echo "client-{$fd} is closed\n";

});


$ws->start();

这个是swoole官方的例子


3、使用命令行工具执行文件:

php 网站根目录/api/sms.php

image.png

如果这种样子表服务已经正常启动了


4、安全组放行端口号:9502


5、宝塔防火墙放行端口号:9502


6、使用swoole官方例子在任意html文件中加上客户端测试代码

<script>

    var wsServer = 'ws://网站域名或ip地址:9502';

    var websocket = new WebSocket(wsServer);

    websocket.onopen = function (evt) {

        console.log("Connected to WebSocket server.");

    };


    websocket.onclose = function (evt) {

        console.log("Disconnected");

    };


    websocket.onmessage = function (evt) {

        console.log('Retrieved data from server: ' + evt.data);

    };


    websocket.onerror = function (evt, e) {

        console.log('Error occured: ' + evt.data);

    };

</script>



在线咨询 拨打电话

电话

13363039260

微信二维码

微信二维码