Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
workerman实现tcp和http双向连接的方法介绍_创想鸟

workerman实现tcp和http双向连接的方法介绍

下面给大家介绍一下workerman实现tcp和http双向连接的方法介绍。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

workerman实现tcp和http双向连接的方法介绍

相关推荐:《workerman教程》

workerman实现tcp和http双向连接

本来想采用GatewayWorker来完成的,最后还是想写简单一点。用workerman进行和智能设备的tcp长连接和http的短连接。
场景需求。小程序端传给服务器开启设备或调节温度等操作。服务器和小程序http短连接,拿到信息后与设备进行tcp长连接。

1、建立tcp连接

protected $socket = 'tcp://0.0.0.0:2346';protected $processes = 1;protected $uidConnections = array();

2、在onWorkerStart建立http连接

global $ws_worker;    // 监听5678端口,协议websocket/http    $ws_worker = new Work('http://0.0.0.0:5678');    // 网页ws发来数据的时候的处理,可根据需要做处理,这里省略    $ws_worker->onMessage = function($ws_connection, $data){    $redis = new Redis();        //获取http发过来的http值        $data = $data['get'];        if(empty($data['type'])){            $ws_connection->send("type为空");        }elseif($data['type'] == 1){            //开机            //拿mac去redis验证是否存在,然后拿拿到http进行访问请求开机。做个定时器。到期自动请求设备关机            $mac = $redis->hGet('facility',$data['mac']);            if(!$mac){                $ws_connection->send("mac地址错误");            }            $status = $this->sendMessageByUid($mac,'开机');//像指定用户发送消息            if($status == 1){//回调码,判断是否成功                $ws_connection->send("开机成功");            }else{                $ws_connection->send("发生错误");            }        }elseif($data['type'] == 2){            //关机            //拿mac去redis验证是否存在,然后拿拿到http进行访问请求关机。            $mac = $redis->hGet('facility',$data['mac']);            if(!$mac){                $ws_connection->send("mac地址错误");            }              $status = $this->sendMessageByUid($mac,'关机');//像指定用户发送消息            if($status == 1){//回调码,判断是否成功                $ws_connection->send("关机成功");            }else{                $ws_connection->send("发生错误");            }        }    };    $ws_worker->listen();}

上面代码为demo案例。下面做点连接的测试,业务代码自行参考

3、tcp连接与http连接

法语写作助手 法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31 查看详情 法语写作助手

 /** * 当连接建立时触发的回调函数 * @param $connection */public function onConnect($connection){  $connection->send(“tcp连接\n");    echo 'tcp连接';    }

我们做一个客户端的tcp连接请求。

'123456','ip'=>'1.2.3.4');socket_write($socket, json_encode($mac)) or die("Write failed\n");while ($buff = socket_read($socket, 1024, PHP_NORMAL_READ)) {    echo '1';    echo("Response was:" . $buff . "\n");    echo("input what you want to say to the server:\n");    $text = fgets(STDIN);    socket_write($socket, $text);}socket_close($socket);

我们在终端运行这个php文件和server文件,当建立了连接时。服务端会输出tcp连接(此时已是长连接)

注:当用tcp连接发送消息的时候,注意粘包问题。每个消息后加”\n”代表换行

在这里插入图片描述
我们在试一下http连接,http连接就简单多了。url访问就可以了

global $ws_worker;$ws_worker = new Work('http://0.0.0.0:5678');$ws_worker->onMessage = function($ws_connection, $data){        echo "http连接";}

在这里插入图片描述
这个简单的例子应该都懂。接下来就差业务代码了,就看自己发挥了。

更多编程相关知识,请访问:编程教学!!

以上就是workerman实现tcp和http双向连接的方法介绍的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/350484.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
抖音金牌店铺是什么意思?抖音金牌店靠谱吗
上一篇 2025年11月5日 22:04:11
《倒数日》置顶事件方法
下一篇 2025年11月5日 22:04:12

相关推荐

  • Workerman的应用方向有哪些

    Workerman的应用方向有哪些Workerman的应用方向有哪些Workerman的应用方向有哪些Workerman的应用方向有哪些

    下面由workerman使用教程栏目给大家介绍workerman的应用方向有哪些,希望对需要的朋友有所帮助! Workerman不同于传统MVC框架,Workerman不仅可以用于Web开发,同时还有更广阔的应用领域,例如即时通讯类、物联网、游戏、服务治理、其它服务器或者中间件,这无疑大大提高了PH…

    2026年9月25日 • 用户投稿
    000
  • Workerman框架的理念

    Workerman框架的理念Workerman框架的理念Workerman框架的理念Workerman框架的理念

    下面由workerman教程栏目给大家介绍workerman框架的理念是什么,希望对需要的朋友有所帮助! Workerman框架的理念 极简、稳定、高性能、分布式。 极简 小即是美,Workerman内核极简,仅有几个php文件并且只暴露几个接口,学习起来非常简单。所有其它功能通过组件的方式扩展。 …

    2026年9月25日 • 用户投稿
    000
  • WorkerMan的特性

    WorkerMan的特性WorkerMan的特性WorkerMan的特性WorkerMan的特性

    下面由workerman php教程栏目给大家介绍workerman的特性,希望对需要的朋友有所帮助! WorkerMan的特性 1、纯PHP开发 使用WorkerMan开发的应用程序不依赖php-fpm、apache、nginx这些容器就可以独立运行。 这使得PHP开发者开发、部署、调试应用程序非…

    2026年9月25日 • 用户投稿
    500
  • workerman之小谈PHP中的几种运行模式

    workerman之小谈PHP中的几种运行模式workerman之小谈PHP中的几种运行模式workerman之小谈PHP中的几种运行模式workerman之小谈PHP中的几种运行模式

    下面由workerman使用教程栏目给大家介绍php中的几种运行模式,希望对需要的朋友有所帮助! 我们知道 workerman 程序需要在php-cli模式下运行,也就是命令行模式,这块我们有必要了解一下。话说PHP当下一共有4种运行模式,分别是CGI、FastCGI、CLI和Web模块模式。 CG…

    2026年9月25日 • 用户投稿
    600
  • workerman是什么意思

    workerman是什么意思workerman是什么意思workerman是什么意思workerman是什么意思

    下面由workerman入门教程栏目给大家介绍什么是workerman,希望对需要的朋友有所帮助! Workerman,高性能socket服务框架 Workerman是什么? Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。 boardmix博思白板 boardmi…

    2026年9月25日 • 用户投稿
    700
  • WorkerMan Connection类的使用(附代码)

    WorkerMan Connection类的使用(附代码)WorkerMan Connection类的使用(附代码)WorkerMan Connection类的使用(附代码)WorkerMan Connection类的使用(附代码)

    下面由workerman教程栏目给大家介绍workerman connection类的使用,希望对需要的朋友有所帮助! 一、TcpConnection类 的使用  1、简单的TCP测试 Server.php 代码小浣熊 代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代…

    2026年9月25日 • 用户投稿
    000
  • workerman与thinkphp结合使用的方法

    workerman与thinkphp结合使用的方法workerman与thinkphp结合使用的方法workerman与thinkphp结合使用的方法workerman与thinkphp结合使用的方法

    下面由workerman入门教程栏目给大家介绍将workerman与thinkphp结合的方法,希望对大家有一定的帮助。 运行workerman需要安装pcntl和event或者libevent pcntl安装方法: 以php-5.5.20为例,实际情况按自己安装的PHP目录 立即学习“PHP免费学…

    2026年9月25日 • 用户投稿
    200
  • 什么是workerman?

    什么是workerman?什么是workerman?什么是workerman?什么是workerman?

    workerman是一个高性能的PHP socket 服务器框架,workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏服务器等。 workerman的目标是让PHP开发者更容易的开发出基于…

    2026年9月25日 • 用户投稿
    000
  • 怎么启动workerman

    怎么启动workerman怎么启动workerman怎么启动workerman怎么启动workerman

    注意Workerman启动停止等命令都是在命令行中完成的。 要启动Workerman,首先需要有一个启动入口文件,里面定义了服务监听的端口及协议。 启动           (推荐学习: workerman教程) 以debug(调试)方式启动 php start.php start 以daemon(…

    2026年9月25日 • 用户投稿
    000
  • workerman用什么协议

    workerman用什么协议workerman用什么协议workerman用什么协议workerman用什么协议

    workerman用什么协议?workerman支持哪些协议? WorkerMan在接口上支持各种协议,只要符合ConnectionInterface接口即可(参见定制通讯协议章节)。 为了方便开发者,WorkerMan提供了HTTP协议、WebSocket协议以及非常简单的Text文本协议、可用于…

    2026年9月25日 • 用户投稿
    100
  • TP5 如何整合 WorkerMan 以及 GatewayWorker

    TP5 如何整合 WorkerMan 以及 GatewayWorkerTP5 如何整合 WorkerMan 以及 GatewayWorkerTP5 如何整合 WorkerMan 以及 GatewayWorkerTP5 如何整合 WorkerMan 以及 GatewayWorker

    下面由workerman教程栏目给大家介绍tp5整合 workerman 以及 gatewayworker的方法,希望对需要的朋友有所帮助! TP5整合GatewayWorker Windows版安装 a)使用composer create-project topthink/think testTG…

    2026年9月25日 • 用户投稿
    100
  • workerman关闭失败

    workerman关闭失败workerman关闭失败workerman关闭失败workerman关闭失败

    运行 php start.php stop 提示 stop fail 原因:几种可能性         (推荐学习: workerman教程) 第一种可能性: 前提是以debug方式启动的workerman,开发者在终端按了ctrl z给workerman发送了SIGSTOP信号,导致workerm…

    2026年9月25日 • 用户投稿
    100
  • php workerman能做什么

    php workerman能做什么php workerman能做什么php workerman能做什么php workerman能做什么

    php workerman能做什么? Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。 Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的socket服务框架,你可以用它开发tcp代理、梯子代理、做游戏服务器、邮件服务器、ftp服务器、甚…

    2026年9月25日 • 用户投稿
    200
  • php workerman是异步么

    php workerman是异步么php workerman是异步么php workerman是异步么php workerman是异步么

    workerman官方介绍:Workerman是一款开源高性能异步PHP socket即时通讯框架。支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏等开发。       (推荐学习: workerman教程)  支持TCP长连接,支持Websocket、HT…

    2026年9月24日 • 用户投稿
    100
  • workerman如何保持连接

    workerman如何保持连接workerman如何保持连接workerman如何保持连接workerman如何保持连接

    正常的情况客户端断开连接会向服务端发送一个fin包,服务端收到fin包后得知客户端连接断开,则立刻触发onClose事件回调。 但是有些极端情况如客户端掉电、网络关闭、拔网线、路由故障等,这些极端情况客户端无法发送fin包给服务端,服务端便无法知道连接已经断开。如果客户端与服务端定时有心跳数据传输,…

    2026年9月24日 • 用户投稿
    100
  • linux下workerman怎么启动

    linux下workerman怎么启动linux下workerman怎么启动linux下workerman怎么启动linux下workerman怎么启动

    注意Workerman启动停止等命令都是在命令行中完成的。 要启动Workerman,首先需要有一个启动入口文件,里面定义了服务监听的端口及协议。 启动 1、以debug(调试)方式启动 php start.php start 2、以daemon(守护进程)方式启动 php start.php st…

    2026年9月24日 • 用户投稿
    100
  • workerman无法启动的原因与解决方法

    workerman无法启动的原因与解决方法workerman无法启动的原因与解决方法workerman无法启动的原因与解决方法workerman无法启动的原因与解决方法

    工作中碰到workerman启动失败最常见的就是由于启动脚本找不到主进程pid文件导致的,workerman 3.2.2之前的版本主进程pid文件默认存储在/tmp/下,有些系统会定时清理/tmp/目录,导致无法启动。 解决方法: 方法1:升级workerman到3.2.2或以上版本,workerm…

    2026年9月24日 • 用户投稿
    000
  • Workerman网络编程实践:构建实时数据同步系统

    workerman网络编程实践:构建实时数据同步系统 引言:现在,随着互联网的高速发展和智能设备的普及,实时数据同步系统成为各个行业不可或缺的一部分。实时数据同步系统可以将数据快速地从一个源同步到多个目标,确保数据的准确性和及时性。本文将介绍如何使用PHP扩展库Workerman来构建一个高效的实时…

    用户投稿 2026年9月22日
    100
  • Workerman开发技巧大揭秘:提升网络应用性能的实用技巧

    workerman开发技巧大揭秘:提升网络应用性能的实用技巧 引言:Web应用程序的性能对于用户体验至关重要。网络应用性能的提升除了优化前端页面加载速度外,后端服务器的处理能力也是不可忽视的。在这方面,Workerman是一个强大的PHP框架,它可以帮助我们构建高性能的网络应用。本文将揭示一些实用的…

    用户投稿 2026年9月22日
    000
  • Workerman网络编程实践:构建可靠的即时数据同步系统

    workerman网络编程实践:构建可靠的即时数据同步系统 随着互联网和移动设备的普及,即时通讯变得越来越重要。在不同设备和平台之间实现即时通讯和数据同步已经成为开发者的常见需求。在这篇文章中,我们将探讨如何使用Workerman网络编程框架构建一个可靠的即时数据同步系统。 Workerman简介W…

    用户投稿 2026年9月22日
    100

发表回复

登录后才能评论
关注微信