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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
5 k3 `* P/ B; i' m# D
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 0 t/ X* B# `" C, H* N) T: z
下载WEB消息推送框架
0 H# j- m2 z, p- a) z

- Y) q! K* B1 I- ?$ |7 d; w0 F   下载19472次) `  m1 `/ G, a( @8 f) Z

8 O+ K4 F, z6 KPHPSocket.IO开发手册
4 [4 j2 I2 ~$ Q% y5 p
+ |) f2 o+ {2 L  e5 ]
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content! z; \/ b9 v. N# L) O
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

) j/ Z; \. i5 u( s# B
效果2:. ]- z: I$ b0 ~

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

# N: M: o$ V1 j

- H4 N; W2 Y! g3 c5 f安装启动

首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)

, N% R: u, {( _4 H' s6 w" }

2 N; h: ^/ X# ~' {5 x6 n) u

7 g4 ?& S- Z3 ?前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    3 W( F# W. d. ~. \
  2. <script>: ~7 C! H% V1 e$ R
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    1 {$ \# k6 q7 L8 ]& m
  4.     var socket = io('http://workerman.net:2120');+ A! D& {) e* |# o0 ?
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数* T2 i, G8 d5 [3 e
  6.     uid = 123;
    - O9 n9 p7 i& I
  7.     // socket连接后以uid登录( Z: a, u# x3 ^+ t; j8 N! K6 D
  8.     socket.on('connect', function(){0 g% [; s7 l  o/ w, a
  9.             socket.emit('login', uid);
    ) Z) K- i: t( p/ i2 r( Y$ L) N
  10.     });) X7 O& [8 Z5 M* H7 L$ h6 u
  11.     // 后端推送来消息时- g9 ]+ A# w6 C, f& S* b
  12.     socket.on('new_msg', function(msg){2 a" y! G. ~* E0 k  s+ ?$ f
  13.         console.log("收到消息:"+msg);2 c) V* M4 [3 o) I) W; ]7 ?- V
  14.     });9 \8 L7 G6 F1 |4 e# ~* r! x
  15.     // 后端推送来在线数据时
    ; q; q7 d0 O' @: [3 V5 r
  16.     socket.on('update_online_count', function(online_stat){  d: @& G8 _- Y( w+ P
  17.         console.log(online_stat);
    , ^3 v9 X6 @, ]% q( W
  18.     });( |+ W% _) P9 J8 D
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php/ }) n! q2 R- Q1 y9 l- a, F/ ?
  2. // 指明给谁推送,为空表示向所有在线用户推送
    $ v: s0 {% q" b: U
  3. $to_uid = "";3 ]  l/ u) u7 `0 w
  4. // 推送的url地址,使用自己的服务器地址2 x" s& S2 X, o* g
  5. $push_api_url = "http://workerman.net:2121/";
    " D# n! d3 x5 u# [: q
  6. $post_data = array(4 _4 k2 x# P/ O
  7.    "type" => "publish",
    - R2 b8 U8 t3 E7 a( n( E
  8.    "content" => "这个是推送的测试数据",
    ! q2 V* K4 D9 B: k. ^5 I
  9.    "to" => $to_uid,   ]# O. _4 T" q5 U0 [) F
  10. );
      ]6 U# h8 @: z. q& ^
  11. $ch = curl_init ();
    - |0 G5 m$ z" j" ?% L. a4 n
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );. g# e$ y  o$ ~# @
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );0 ^7 U2 n1 T, V  w8 H9 d' b  X) z' z: C
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );% k. P; n3 ^' ?. x; r  _
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );! L, A3 \  A- e8 Y- Y
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    ) Q* S: y! Y# z% i' [) v
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    & y! d- `% z( ^* E0 \0 ]
  18. $return = curl_exec ( $ch );6 \$ {+ A; K/ u' d
  19. curl_close ( $ch );# ]. p9 D% g/ G6 C8 C
  20. var_export($return);
复制代码

* f. q8 e" d8 R( i* M3 y: ?4 B- O
) s6 z/ c; k2 ~& V+ @  U) M
! H" C! M% }$ X
- C, d% j% D! Z4 k+ Z, o9 A
4 t5 J# l# y1 L. Z3 \4 {1 s8 X* z
本文摘自 https://www.workerman.net/web-sender
% v" }" E* \4 C& W, ~) h
  N" X5 R3 o9 {. o% i. O; V; ^/ Y+ i* A" _" V, n. q4 B: S! e3 {

. _  c: j) a/ f* @2 x, w# e, w: v: ^* J6 U# ^, l2 R+ p

6 {, R6 l; Y5 x# ~$ ^4 n% l( f  y; Q) l

) t+ s3 \6 p) @3 x/ z, O  K' u* M

2 \4 q3 T: o$ M' M+ j
& P) o+ N) k9 A6 f" ?0 Y: H6 e' G! |

/ U9 [+ o5 @' h, `) ]
. k1 d: ^4 s- O7 }9 M7 Z' C) f, w

  y3 b0 Y2 s% d6 @0 k  U' L% ?* E: Z3 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:19 , Processed in 0.074382 second(s), 22 queries .

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