您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15055|回复: 0
打印 上一主题 下一主题

[php学习资料] WEB消息推送框架

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-27 14:07:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。

特点:& H$ p9 q. X, J' F7 m8 O
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 4 g8 p) R9 p, t8 B) \7 S% R; Q( E" |* i
下载WEB消息推送框架# @9 A3 p- d+ Q6 u$ w0 i  b

& B2 r( _/ g8 w' ]% ~& }& X   下载19472次$ v! W, |% A7 z2 D
: P& N3 [5 N7 }- y
PHPSocket.IO开发手册' Y8 A2 \8 P2 a1 {! O, Y

+ e1 c4 e0 l3 {" e
PHPSocket.IO开发手册Demo:效果1:

接收消息页面:http://demos.workerman.net/web-sender/

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content( w- F2 t' h: d
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

9 ^  i/ I0 u- h  P
效果2:
8 U+ a' ]3 w" o

见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计


8 t$ `5 Y' f. M' @9 Z. Y7 C! Y( X' M' U+ L
安装启动

首先:参考手册检查/安装workerman环境

1、下载:(下载web-msg-sender,并解压缩到任意目录

2、启动:linux系统cd到到框架目录里运行php start.php start -d。windows系统进入到框架目录里双击start_for_win.bat文件启动。

3、测试:浏览器访问端口http://ip:2123或者http://域名:2123,例如 http://workerman.net:2123如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


" {: g- U" S( o# v; O

# a. b, ]* M  P, {$ s

- S1 c! w! A$ N前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>2 g; w4 R) Y% f& f( |9 o0 i
  2. <script>7 n6 {8 f! A; F* l6 Q
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    ' u8 v" e- Z9 j0 h
  4.     var socket = io('http://workerman.net:2120');
    ' M. {3 {0 E: h' J- n7 t% t" [
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    ; h; Z9 [( K- O5 Z9 u! A
  6.     uid = 123;
    % c: w! ^* M2 M7 |
  7.     // socket连接后以uid登录
    * J3 b7 U/ I& b6 B: ?( c' n8 e
  8.     socket.on('connect', function(){
    # h& O1 J, o4 @3 _  ^" s
  9.             socket.emit('login', uid);; f0 e8 U' |% b
  10.     });
    / K6 M4 g, v$ @
  11.     // 后端推送来消息时
    ! K2 |* U) J6 |) {
  12.     socket.on('new_msg', function(msg){
    4 T9 B% Y3 e! T/ D, {2 G
  13.         console.log("收到消息:"+msg);7 x- X  E1 N/ f, _: f
  14.     });; _$ Q7 E' X8 L3 e
  15.     // 后端推送来在线数据时
    . q  b; D& u4 Y' g/ {0 n3 u
  16.     socket.on('update_online_count', function(online_stat){5 X; F3 [0 L) X* H6 D9 {0 B
  17.         console.log(online_stat);
    5 q  T8 X2 m' L4 V: J
  18.     });9 ^) m8 t! f- u/ Y% k) v
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php8 l, k. v, c$ b$ ^: _% n
  2. // 指明给谁推送,为空表示向所有在线用户推送: l& c+ E" C& x1 h1 f! [( p  q
  3. $to_uid = "";# }+ r5 y. u, y" {2 i- Z6 ?4 k  t) l
  4. // 推送的url地址,使用自己的服务器地址6 Z% h: i# ~# L+ F
  5. $push_api_url = "http://workerman.net:2121/";9 h9 ^" A" p5 i, j; P. e
  6. $post_data = array(
    8 d' m$ G8 x+ o* A
  7.    "type" => "publish",5 U+ ^* H9 k' a6 z, M
  8.    "content" => "这个是推送的测试数据",$ A4 @3 s, K" `2 l) T# `' e
  9.    "to" => $to_uid,
    " p( B# L5 a! q) S% \
  10. );5 }& O0 g' q* L* `
  11. $ch = curl_init ();+ W. d; E# d# T, g  O# K
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );; I% T# G1 v* ?( @  o" Y
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    & P# r3 S0 q& n8 z7 L
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    6 D! o0 _4 x0 [# v+ B) B
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );( V  C9 C, p  {3 [' e
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    % m: T* R) i' `0 m1 j
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    9 e& K) O9 Q$ b7 V9 _
  18. $return = curl_exec ( $ch );! @5 C. q) W3 @7 l  {
  19. curl_close ( $ch );
    ; l- t8 l! _" B/ F; u9 j5 W
  20. var_export($return);
复制代码

, b1 p0 n2 V' M" B: d6 }8 S6 {+ s! {6 |& L4 L" r6 ?! w

; K1 }9 k: |* c. I9 W
; q2 R' b! n6 J- t, K

* l8 k$ s) ?# O( G; Z" F# D2 G本文摘自 https://www.workerman.net/web-sender. [" H4 P. J( B& b
7 G( s- E9 Y' j. Z8 F

4 V2 O$ K/ S3 _! Y7 L7 f
" J5 ~) ~3 o7 I$ T% S3 i, x
3 W# Y6 z, C' \6 d% _0 R1 m: k; Y
5 Z7 L% ?5 L5 x8 t8 d0 M9 `5 \
. v2 n! n! {. T: a7 f' u  b6 w

1 G7 n. B7 v3 q2 J6 c$ T
5 w0 Y4 X+ U& W- V- `
' I: I' E4 c8 {# N
: v( r' K; q, k: ^
: F# N' }: s" \' f3 F
# U( A" d# U! a3 C! Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 00:01 , Processed in 0.072632 second(s), 22 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!