简介

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进行消息推送相关推荐

  1. 基于websocket的网页实时消息推送与在线聊天(上篇)

    文章目录 @[toc] 基于websocket的网页实时消息推送与在线聊天(上篇) "使用dwebsocket在django中实现websocket" websocket原理图 d ...

  2. 前端基于uniapp[uniPush]实现APP消息推送(安卓、IOS)

    前提概述:此文章都是基于uniapp中uniPush2实现的在线.离线推送 app消息推送流程 登录开发者中心先填写好项目信息以及配置厂商 在manifest.json文件中勾选推送模块 打包自定义基 ...

  3. 基于Pushlet实现的网站消息推送

    上一篇文章我们介绍了几种实现消息推送的方案,今天我们主要用pushlet开源框架来实现消息的推送~~~并贡献出我的一个完整小程序~~~ Pushlet是一种comet实现:在Servlet机制下,数据 ...

  4. Knative 实战:基于阿里云 Kafka 实现消息推送

    在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何在阿里云上基于 Kafka 实现消息推送,本文给大家解锁这一新的姿势. 背景 消息队列 for Apache Kafka 是阿里云 ...

  5. web中的GoEasy消息推送机制

    最近要用到消息推送机制,网上查了很多,什么websocket,pushlet,GoEasy等,最后发现还是GoEasy最简单方便,很容易入手,不到10分钟就可以进行web端的消息推送啦 话不多说,直接 ...

  6. 微信push服务器,GitHub - brucx/mp-push-nestjs: 微信公众号消息推送服务,类似“server酱”,提供Docker镜像部署...

    MP-PUSH 一个频道可以被多个微信订阅,一个微信也可以订阅多个频道.当有消息到达频道时,会向所有订阅的微信推送通知. 开发此项目的目的是实现一个自己的"Server酱",方便自 ...

  7. 基于企业微信api 开发 消息推送提醒 Python与Java

    1.关于脚本 身为一个程序猿,不管你从事什么开发,学会使用一门脚本语言可以提高你的开发效率.我目前使用的是Python,因为它支持的库非常多,拿来即用.在这个快节奏的开发,是非常有效率的,所以我非常强 ...

  8. Web端即时通讯、消息推送的实现

    在浏览某些网页的时候,例如 WebQQ.京东在线客服服务.CSDN私信消息等类似的情况下,我们可以在网页上进行在线聊天,或者即时消息的收取与回复,可见,这种功能的需求由来已久,并且应用广泛. 网上关于 ...

  9. python银行排队系统_python-我需要基于Web的系统的消息/排队解决...

    我正在寻找在Ubuntu上运行的基于Web的系统的消息/队列解决方案. 该系统基于以下技术构建: Javascript (Extjs framework) – Frontend PHP Python ...

  10. 关于web端的消息推送方式转载

    引言: 在互联网高速发展的时代里,web应用大有取代桌面应用的趋势,不必再去繁琐的安装各种软件,只需一款主流浏览器即可完成大部分常规操作,这些原因都在吸引着软件厂商和消费者.而随着各大厂商浏览器版本的 ...

最新文章

  1. Navicat for Oracle
  2. MATLAB_size()和find(),有什么区别?
  3. 在 CentOS 7 中安装并使用自动化工具 Ansible
  4. BZOJ3393 [Usaco2009 Jan]Laserphones 激光通讯
  5. python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片
  6. Lowest Common Multiple Plus ——ACM
  7. PostgreSQL DBA最常用SQL
  8. java语言程序设计 第八版 基础篇_Java语言程序设计基础篇(第八版)编程8.7答案
  9. 若干排序算法简单汇总(一)
  10. WebGIS第一课:测试高德API并通过
  11. ubuntu18.4.02配置静态IP和DNS并ping外网
  12. 超级计算机作文230字,我想养小兔子二年级作文230字
  13. H5页面投票怎么制作
  14. android-759b1c是什么,[原创]hooker + jadx 动静结合内存漫游窥视某社交软件视频号功能的数据...
  15. 利用网校源码进行网校系统开发可以解决哪些问题
  16. 那些入行的Python工程师们还好吗?
  17. 免费开源JAVA报表工具对比 BIRT报表VS润乾报表之初体验
  18. Cynthia项目缺陷管理系统
  19. windows10 anaconda下,使用matplotlib画图,图例和坐标轴输出中文乱码的解决办法
  20. 如何透過JavaScript來觸發LinkButton的PostBack,呼叫後端的程式

热门文章

  1. B站《一天学会 MySQL 数据库》学习笔记
  2. ParLECH: Parallel Long-Read Error Correction with Hadoop
  3. Read correction for non-uniform coverages 读校正非均匀覆盖
  4. 四十三、文件存储空间管理
  5. LeetCode 167. Two Sum II - Input array is sorted--Python解法
  6. LeetCode 421. Maximum XOR of Two Numbers in an Array--Python解法
  7. Linux: debian,ubuntu命令行安装chrome/chromium
  8. centos7 解决chrome提示您的连接不是私密连接的方法
  9. windows开启ssh当跳板机
  10. java 下一代,什么是"下一代插件"对Java