push msg php_基于web-msg-sender进行消息推送
简介
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。
特点:
多浏览器支持
支持针对单个用户推送消息
支持向所有用户推送消息
长连接推送(websocket或者comet),消息即时到达
支持在线用户数实时统计展示
支持在线页面数实时统计展示
支持跨域推送
场景
我司客服部门需要订单产生变化时方便的收到提醒,同时会员也需要站内信此类功能
环境
php7
thinkphp 5
ubuntu 16.04, Deepin 15.2, CentOS 7
安装
服务跑起来
cd web-msg-sender
php start.php start -d
然后就会看见如下输出
Workerman[start.php] start in DAEMON mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.2.8 PHP version:7.0.8-2
------------------------ WORKERS -------------------------------
user worker listen processes status
sinux PHPSocketIO socketIO://0.0.0.0:2120 1 [OK]
sinux WebServer http://0.0.0.0:2123 1 [OK]
----------------------------------------------------------------
Input "php start.php stop" to quit. Start success.
这就是跑起来了,OK
demo
服务端推
/application/lib/event/PushEvent.php
namespace app\lib\event;
/**
* 推送事件
* 典型调用方式:
* $push = new PushEvent();
* $push->setUser($user_id)->setContent($string)->push();
*
* Class PushEvent
* @package app\lib\event
*/
class PushEvent
{
/**
* @var string 目标用户id
*/
protected $to_user = '';
/**
* @var string 推送服务地址
*/
protected $push_api_url = 'http://127.0.0.1:2121/';
/**
* @var string 推送内容
*/
protected $content = '';
/**
* 设置推送用户,若参数留空则推送到所有在线用户
*
* @param string $user
* @return $this
*/
public function setUser($user = '')
{
$this->to_user = $user ? : '';
return $this;
}
/**
* 设置推送内容
*
* @param string $content
* @return $this
*/
public function setContent($content = '')
{
$this->content = $content;
return $this;
}
/**
* 推送
*/
public function push()
{
$data = [
'type' => 'publish',
'content' => $this->content,
'to' => $this->to_user,
];
$ch = curl_init ();
curl_setopt($ch, CURLOPT_URL, $this->push_api_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
$res = curl_exec($ch);
curl_close($ch);
dump($res);
}
}
客户端(浏览器)收
/application/demo/view/PushDemo/targetPage.html
Title
jQuery(function ($) {
// 连接服务端
var socket = io('http://127.0.0.1:2120'); //这里当然填写真实的地址了
// uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
uid = 123;
// socket连接后以uid登录
socket.on('connect', function () {
socket.emit('login', uid);
});
// 后端推送来消息时
socket.on('new_msg', function (msg) {
console.log("收到消息:" + msg);
$('#target').append(msg).append('
');
});
// 后端推送来在线数据时
socket.on('update_online_count', function (online_stat) {
console.log(online_stat);
$('#count').html(online_stat);
});
})
写个用例,试一下
/application/demo/controller/PushDemo.php
namespace app\demo\controller;
use app\lib\event\PushEvent;
/**
* 推送demo
*
* Class PushDemo
* @package app\demo\controller
*/
class PushDemo
{
/**
* 推送一个字符串
*/
public function pushAString()
{
$string = 'Man Always Remember Love Because Of Romance Only';
$string = input('msg') ? : $string;
$push = new PushEvent();
$push->setUser()->setContent($string)->push();
}
/**
* 推送目标页
*
* @return \think\response\View
*/
public function targetPage()
{
return view();
}
}
push msg php_基于web-msg-sender进行消息推送相关推荐
- 基于websocket的网页实时消息推送与在线聊天(上篇)
文章目录 @[toc] 基于websocket的网页实时消息推送与在线聊天(上篇) "使用dwebsocket在django中实现websocket" websocket原理图 d ...
- 前端基于uniapp[uniPush]实现APP消息推送(安卓、IOS)
前提概述:此文章都是基于uniapp中uniPush2实现的在线.离线推送 app消息推送流程 登录开发者中心先填写好项目信息以及配置厂商 在manifest.json文件中勾选推送模块 打包自定义基 ...
- 基于Pushlet实现的网站消息推送
上一篇文章我们介绍了几种实现消息推送的方案,今天我们主要用pushlet开源框架来实现消息的推送~~~并贡献出我的一个完整小程序~~~ Pushlet是一种comet实现:在Servlet机制下,数据 ...
- Knative 实战:基于阿里云 Kafka 实现消息推送
在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何在阿里云上基于 Kafka 实现消息推送,本文给大家解锁这一新的姿势. 背景 消息队列 for Apache Kafka 是阿里云 ...
- web中的GoEasy消息推送机制
最近要用到消息推送机制,网上查了很多,什么websocket,pushlet,GoEasy等,最后发现还是GoEasy最简单方便,很容易入手,不到10分钟就可以进行web端的消息推送啦 话不多说,直接 ...
- 微信push服务器,GitHub - brucx/mp-push-nestjs: 微信公众号消息推送服务,类似“server酱”,提供Docker镜像部署...
MP-PUSH 一个频道可以被多个微信订阅,一个微信也可以订阅多个频道.当有消息到达频道时,会向所有订阅的微信推送通知. 开发此项目的目的是实现一个自己的"Server酱",方便自 ...
- 基于企业微信api 开发 消息推送提醒 Python与Java
1.关于脚本 身为一个程序猿,不管你从事什么开发,学会使用一门脚本语言可以提高你的开发效率.我目前使用的是Python,因为它支持的库非常多,拿来即用.在这个快节奏的开发,是非常有效率的,所以我非常强 ...
- Web端即时通讯、消息推送的实现
在浏览某些网页的时候,例如 WebQQ.京东在线客服服务.CSDN私信消息等类似的情况下,我们可以在网页上进行在线聊天,或者即时消息的收取与回复,可见,这种功能的需求由来已久,并且应用广泛. 网上关于 ...
- python银行排队系统_python-我需要基于Web的系统的消息/排队解决...
我正在寻找在Ubuntu上运行的基于Web的系统的消息/队列解决方案. 该系统基于以下技术构建: Javascript (Extjs framework) – Frontend PHP Python ...
- 关于web端的消息推送方式转载
引言: 在互联网高速发展的时代里,web应用大有取代桌面应用的趋势,不必再去繁琐的安装各种软件,只需一款主流浏览器即可完成大部分常规操作,这些原因都在吸引着软件厂商和消费者.而随着各大厂商浏览器版本的 ...
最新文章
- Navicat for Oracle
- MATLAB_size()和find(),有什么区别?
- 在 CentOS 7 中安装并使用自动化工具 Ansible
- BZOJ3393 [Usaco2009 Jan]Laserphones 激光通讯
- python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片
- Lowest Common Multiple Plus ——ACM
- PostgreSQL DBA最常用SQL
- java语言程序设计 第八版 基础篇_Java语言程序设计基础篇(第八版)编程8.7答案
- 若干排序算法简单汇总(一)
- WebGIS第一课:测试高德API并通过
- ubuntu18.4.02配置静态IP和DNS并ping外网
- 超级计算机作文230字,我想养小兔子二年级作文230字
- H5页面投票怎么制作
- android-759b1c是什么,[原创]hooker + jadx 动静结合内存漫游窥视某社交软件视频号功能的数据...
- 利用网校源码进行网校系统开发可以解决哪些问题
- 那些入行的Python工程师们还好吗?
- 免费开源JAVA报表工具对比 BIRT报表VS润乾报表之初体验
- Cynthia项目缺陷管理系统
- windows10 anaconda下,使用matplotlib画图,图例和坐标轴输出中文乱码的解决办法
- 如何透過JavaScript來觸發LinkButton的PostBack,呼叫後端的程式
热门文章
- B站《一天学会 MySQL 数据库》学习笔记
- ParLECH: Parallel Long-Read Error Correction with Hadoop
- Read correction for non-uniform coverages 读校正非均匀覆盖
- 四十三、文件存储空间管理
- LeetCode 167. Two Sum II - Input array is sorted--Python解法
- LeetCode 421. Maximum XOR of Two Numbers in an Array--Python解法
- Linux: debian,ubuntu命令行安装chrome/chromium
- centos7 解决chrome提示您的连接不是私密连接的方法
- windows开启ssh当跳板机
- java 下一代,什么是"下一代插件"对Java