首页 > 编程语言 >php网络编程swoole websocket

php网络编程swoole websocket

时间:2024-12-23 20:43:02浏览次数:4  
标签:function websocket swoole frame server echo fd php

服务端:

<?php
use Swoole\WebSocket\Server;

// 创建 HTTP 服务器
$server = new Server('127.0.0.1', 8888, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);

$server->on('start', function ($server) {
    //print_r($server);
    echo "Swoole websocket server is started at ws://127.0.0.1:8888\n";
});

// 设置服务器配置
$server->set([
    'worker_num' => 4,
    'log_file' => './logfile.log',
]);

// 监听 WebSocket 连接事件
$server->on('open', function (Server $server, $req) {
    echo "Connection open: {$req->fd}\n";
});

// 监听 WebSocket 消息事件
$server->on('message', function (Server $server, $frame) {
    echo "接收到客户端数据:{$frame->data}\n";
    $server->push($frame->fd, "我收到你的消息了");
});

// 监听 WebSocket 关闭事件
$server->on('close', function (Server $server, $fd) {
    echo "Connection close: {$fd}\n";
});

// 启动服务器
$server->start();

  客户端:

<?php
use Swoole\Coroutine;
use Swoole\Coroutine\Http\Client;
use function Swoole\Coroutine\run;

run(function () {
    $client = new Client('127.0.0.1', 8888);
    $ret = $client->upgrade('/');
    if ($ret) {
        $client->push('测试消息,php版本的协程客户端');
        echo "收到服务端回复:".$client->recv()."\n";
        Coroutine::sleep(0.1);
    }
});

  输出:

 

标签:function,websocket,swoole,frame,server,echo,fd,php
From: https://www.cnblogs.com/xuxiaobo/p/18624989

相关文章

  • php网络编程swoole udp
    服务端:<?php$server=newSwoole\Server('127.0.0.1',9504,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);$server->on('start',function($server){echo"UDPServerisstartedatudp://127.0.0.1:9504\n";});$server->......
  • python网络编程之websocket
    服务端: importasyncioimportwebsockets#保存已连接的客户端列表connected_clients=set()asyncdefhandle_websocket(websocket):#将新的客户端添加到已连接客户端列表remote_address=websocket.remote_addressconnected_clients.add(websocke......
  • php全文搜索代码
    在PHP中实现全文搜索,你可以使用多种方法,具体取决于你的数据存储方式和需求。如果你的数据存储在MySQL数据库中,你可以利用MySQL的全文搜索功能(FULLTEXT)。如果你需要更复杂的搜索功能,可能需要结合Elasticsearch等搜索引擎。下面是一个简单的例子,展示如何使用MySQL的FULLTEXT索引和P......
  • 从零开始:ThinkPHP 入门教程,快速上手 Web 开发
    从零开始:ThinkPHP入门教程,快速上手Web开发在当今的Web开发领域,选择合适的框架可以显著提高开发效率和代码质量。ThinkPHP作为一款轻量级的PHP开发框架,因其简洁易用和高效的性能而受到广泛欢迎。本教程将带领你从零开始,快速上手ThinkPHP,掌握基本的Web开发技能。......
  • 通过WebRTC和Websocket技术实现简单的音视频监控
    文章目录前言一、WebRTC是什么?二、Websocket是什么?三、通过WebRTC和Websocket技术实现视频监控1.websocket服务端2.获取摄像头麦克风音视频流html3.播放摄像头麦克风音视频流html总结前言利用WebRTC和WebSocket技术,可以实现浏览器摄像头监控。这一实现过程主要依赖......
  • 【PHP安全】php程序源码保护技术
    一、基本介绍二、加密方式2.1源码混淆处理2.1.1PHP威盾混淆2.1.2php-obfuscator2.2YAKPro混淆处理2.3源码外壳加密2.3.1PHPEval加密2.3.2PHPEval变异2.3.3phpjiami处理2.4源码扩展加密2.4.1ph......
  • php8新特性
    <?phpheader("Content-type:text/html;charset=utf-8");ini_set('error_reporting',E_ALL);ini_set("display_errors","On");//打开错误提示ini_set('memory_limit','-1');set_time_limit(0);//函数只接受整数或浮......
  • php反序列化
    PHP反序列化漏洞一、基础知识php面向对象的基本概念类与对象classhero{var$name;#var默认是publicpublic$sex;function(){echo$this->name;#必须用this访问类内变量}}$cyj=newhero();$cyj->name='chengyaojin';#注意不是.访问$cyj......
  • [极客大挑战 2020]Roamphp1-Welcome
    [极客大挑战2020]Roamphp1-Welcome一打开靶机发现无法正常访问通过BP抓包后修改为POST方式请求,就能正常进入了代码里可以看到,如果不是POST方式的话会报405接着是参数判断,如果roam1和roam2参数都没有设置的话会显示源代码,这个很简单,我们直接看下一个if判断这里roam1和roam......
  • PHP 10个最具影响力的新功能
    无论您是经验丰富的专家还是刚刚踏入编程世界的初学者,2024年的PHP更新都将为您带来极大的帮助,优化您的代码,并提升开发效率。让我们一起探索10个最具影响力的新功能,它们将彻底改变您的PHP开发之旅!1、只读属性:只能在初始化时赋值,之后不可修改。class User {  pub......