php实时推送系统消息给客户端
在我们实际开发过程中,有些数据需要实时获取;比如erp系统中的订单信息,OA系统中的流程审批等都需要及时处理,这时我们就不能再使用http协议了;当然也可以使用轮询的机制。但是轮询请求中有大半是无用,浪费带宽和服务器资源。
这时我们就得使用websocket协议来满足这种业务需求;
准备工作:安装PHP-swoole拓展;
直接贴代码;
<?php new class
{
private $_serv = null; public function __construct()
{
$this->_serv = new swoole_websocket_server('0.0.0.0', 6552); $this->_serv->set(array(
'worker_num' => 2,
'dispatch_mode' => 3,
'log_file' => 'swoole.log',
));
//增加个监听端口
$udpworker = $this->_serv->listen("127.0.0.1", 6553, SWOOLE_SOCK_UDP); $udpworker->on('Packet', function ($serv, $data, $addr) {
$data = json_decode($data, true);
if(!empty($data)){
//你的业务逻辑
}
}); $this->_serv->on('open', array($this, 'onStart'));
$this->_serv->on('message', array($this, 'onMessage'));
$this->_serv->on('close', array($this, 'onClose')); $this->_serv->start(); } public function onStart($serv, $request)
{
echo "server: connect success with fd {$request->fd}\n";
}
//format:'{"school_class_id":"1","school_id":"2"}'
public function onMessage($serv, $frame)
{
/**start*你的业务逻辑***/
} public function onClose($serv, $fd)
{
echo "client {$fd} closed\n";
} } ?>
原理:首先创建websocket服务器对象,监听0.0.0.0:6552端口,然后在用服务对象去监听UDP 6553的端口。客户端消息发送到6553借口,然后在通过6552端口发送给用户。
php实时推送系统消息给客户端的更多相关文章
- HTML5 WebSocket 实时推送信息测试demo
测试一下HTML5的websocket功能,实现了客户端→服务器实时推送信息到客户端,包括推送图片: websocket实现MessageInbound类 onTextMessage()/onBina ...
- 使用Nodejs实现实时推送MySQL数据库最新信息到客户端
下面我们要做的就是把MySQL这边一张表数据的更新实时的推送到客户端,比如MySQL这边表的数据abc变成123了,那使用程序就会把最新的123推送到每一个连接到服务器的客户端.如果服务器的连接的客户 ...
- 【原创】node+express+socket搭建一个实时推送应用
技术背景 Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新. 应用场景: 监控系统:后台硬件热插拔.LED.温度.电压发生变化 即 ...
- 关于 实时推送技术--WebSocket的 知识分享
今天学习了关于WebSocket的知识,觉得挺有用的,在这记录一下,也和大家分享一下!!有兴趣的可以看看哦 WebSocket简介 Web领域的实时推送技术,也被称作Realtime技术.这种技术要达 ...
- SignalR实时推送
SignalR 的实现机制与 .NET WCF 或 Remoting 是相似的,都是使用远程代理来实现.在具体使用上,有两种不同目的的接口:PersistentConnection 和 Hubs,其中 ...
- 基于Node.js的实时推送 juggernaut
基于Node.js的实时推送 juggernaut Juggernaut 基于 Node.js 构建.为浏览器和服务器端提供一个实时的连接,可在客户端和服务器端进行数据的实时推送,适合多角色游戏.聊天 ...
- GoEasy实现web实时推送过程中的自动补发功能
熟悉GoEasy推送的朋友都知道GoEasy推送实现web实时推送并且能够非常准确稳定地将信息推送到客户端.在后台功能中查看接收信息详情时,可有谁注意到有时候在发送记录里有一个红色的R标志?R又代表的 ...
- WebSocket和kafka实现数据实时推送到前端
一. 需求背景 最近新接触一个需求,需要将kafka中的数据实时推送到前端展示.最开始想到的是前端轮询接口数据,但是无法保证轮询的频率和消费的频率完全一致,或造成数据缺失等问题.最终确定用利 ...
- WEB 实时推送技术的总结
前言 随着 Web 的发展,用户对于 Web 的实时推送要求也越来越高 ,比如,工业运行监控.Web 在线通讯.即时报价系统.在线游戏等,都需要将后台发生的变化主动地.实时地传送到浏览器端,而不需要用 ...
随机推荐
- jq购物车结算功能
css *{font-style: normal} .gw{margin: 8px;} .gw::after{display: block;clear: both;content: '';margin ...
- [luogu3155 CQOI2009] 叶子的染色(树形dp)
传送门 Solution 十分简单的树形dpQwQ,转移关系:父亲染了儿子不用染 只需要确定根就是简单树形dp,而其实根可以随便取一个非叶子节点 可以分情况讨论发现答案并不会改变 Code //By ...
- git 删除某次指定的提交
reset命令有3种方式: 1:git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息 2:gi ...
- 腾讯云,搭建 Discuz 个人论坛
准备 LAMP 环境 任务时间:30min ~ 60min LAMP 是 Linux.Apache.MySQL 和 PHP 的缩写,是 Discuz 论坛系统依赖的基础运行环境.我们先来准备 LAMP ...
- 【codeforces 792D】Paths in a Complete Binary Tree
[题目链接]:http://codeforces.com/contest/792/problem/D [题意] 给你一棵满二叉树; 给你初始节点; 给你若干个往上走,左走,右走操作; 让你输出一系列操 ...
- mode-c++
/*感谢机房JYW的友情馈赠*/#include <iostream> #include <cstdio> #include <cstring> #include ...
- SRPING MVC基本配置
作下记录,WEB.XML的配置及DispatcherServlet-context.xml的配置. 而后者的配置,有不同的形式,不要被迷惑. WEB.XML <servlet> <s ...
- Servlet的HttpServletResponse输出
了解其中的一些字符设置,PrintWriter输出等.. form.html: <!DOCTYPE html> <html> <head> <title> ...
- nyoj_102_次方求模_201308221547
次方求模时间限制:1000 ms | 内存限制:65535 KB 难度:3描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一行,其中有三 ...
- Linux - Virsh
virsh命令 suspend resume dumpxml KVM平台以存储池的形式对存储进行统一管理,所谓存储池能够理解为本地文件夹.通过远端磁盘阵列(iSCSI.NFS)分配过来磁盘或文件夹 ...