php 通知客户端,如何使用PHP主动推送信息给客户端

本文记录了一个软硬件结合项目中,如何使用PHP通过内部端口监听和socket通信,实现实时推送信息到微信小程序客户端的过程。文章详细介绍了需求分析、解决方案以及具体的PHP代码实现。
摘要由CSDN通过智能技术生成

一、需求分析

开发一个项目微信小程序享寄存,软硬件结合,软硬件通信以前没有做过,网上的资料也很少,踩了不少的坑,特此记录一下。首先硬件和服务器建立一个socket长链接,前端微信小程序给服务器,发出命令给服务器,开锁,服务器如何通知客户端呢?

二、解决方案

在硬件客户端和服务器建立链接时,同时开启一个内部端口,进行监听

三、代码实现

start.php代码

/**

* Created by PhpStorm.

* User: Administrator

* Date: 2017/12/30

* Time: 23:30

*/

namespace app\push\controller;

use app\api\model\User;

use app\common\model\Box;

use app\common\model\Chest;

use GatewayWorker\Gateway;

use My\RedisPackage;

use think\Cache;

use think\Db;

use think\Log;

use think\worker\Server;

class Worker extends Server

{

/**

* 每个进程启动

* @param $worker

*/

public function onWorkerStart($worker)

{

// 开启一个内部端口,方便内部系统推送数据,Text协议格式 文本+换行符

$inner_text_worker = new \Workerman\Worker('text://0.0.0.0:5678');

$inner_text_worker->onMessage = function($connection, $buffer)

{

// $data数组格式,里面有uid,表示向那个uid的页面推送数据

$data = json_decode($buffer, true);

$uid = $data['uid'];

$openArr = config('lock.open');

$index = $data['index'];

// 通过workerman,向uid的页面推送数据

$ret = $this->sendMessageByUid($uid, self::hexToString($openArr[$index]));

// 返回推送结果

$connection->send($ret ? 'ok' : 'fail');

};

// ## 执行监听 ##

$inner_text_worker->listen();

}

/**

* 收到信息

* @param $connection

* @param $data

*/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值