服务器用php实现tcp,想要实现:设备通过tcp连接服务器,框架用的是worker或者gateway...

有几种方式可以做到

1、最简单的方式,开一个worker进程即监听tcp,又监听websocket,这样在一个进程里方便互相操作连接传递数据

use Workerman\Worker;

// 监听tcp端口,硬件连这个端口

$iot_worker = new Worker('tcp://0.0.0.0:1234');

// 两个协议互通这种方式只能单进程

$iot_worker->count = 1;

// 进程启动时增加一个5678端口的websocket协议的监听,网页用ws连5678端口

$iot_worker->onWorkerStart = function(){

// 声明为全局变量,方便其它地方获取到这个容器对象

global $ws_worker;

// 监听5678端口,协议websocket

$ws_worker = new Worker('websocket://0.0.0.0:5678');

// 网页ws发来数据的时候的处理,可根据需要做处理,这里省略

$ws_worker->onMessage = function($ws_connection, $data){...};

$ws_worker->listen();

};

// 硬件发来消息的回调

$iot_worker->onMessage = function($connection, $data){

// 得到$ws_worker容器

global $ws_worker;

// 遍历容器里的连接给所有网页推送硬件发来的数据

foreach($ws_worker->connections as $ws_connection) {

$ws_connection->send($data);

}

};

// 启动workerman

Worker::runAll();

2、开A B两组worker进程,A组进程监听tcp,B组进程监听websocket,利用channel通讯,可以参考workerman手册

http://doc.workerman.net/comp...

http://doc.workerman.net/comp...

好处是可以分布式部署,可以多进程多服务器集群

3、用gatewayWorker,开一组tcp端口的gateway进程+一组websocket的进程,参考手册

http://doc2.workerman.net/mul...

好处是同样可以分部署部署,可以多进程多服务器集群,并且gatewayWorker提供了很多长连接直接可以用的接口,非常方便

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值