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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
, a3 w/ l8 Z8 F+ j* t6 W! x& G  H! m
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    * H$ U& q  i4 ?- R% S" g. _
下载WEB消息推送框架
3 K0 T0 f! M0 p0 I' k# s

4 _" n: o- Z- E9 T/ r* q8 U" Z   下载19472次
$ a+ B6 @5 x9 M" N9 H) _& c
4 ~, J+ Z0 O7 H) `, ]) o
PHPSocket.IO开发手册
9 h, U6 |( V' Z' u" _

3 Y1 E4 ~+ m$ C/ b+ ^& J
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content5 G; V0 x2 K0 i" T6 e0 @9 H) W
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

2 J; _+ I8 ^8 \- l
效果2:& Y/ j/ I0 b; u& q2 \8 G

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


- s; `5 W6 r% |4 z0 |8 A
  ~, e, m: s- @# o安装启动

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


4 }, F4 Q2 B! v


* p0 @/ G. l' Y) D9 v. S9 C& h$ @
, o$ q7 w2 a" [9 K前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>8 X7 E+ {- j  `0 t% i! S
  2. <script>
    3 x5 g1 V& S0 c9 }4 V1 o
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    # l$ N9 {  U7 h, I7 h: ^
  4.     var socket = io('http://workerman.net:2120');9 J/ W6 B. d+ b
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    ' c+ f; a: D# Z, J, E0 f; F2 ?
  6.     uid = 123;+ z) ]9 p6 d6 k) }
  7.     // socket连接后以uid登录
    # C  l' H0 A0 X( k+ _0 @# Y
  8.     socket.on('connect', function(){" [/ f& q4 ^- G" ?) h4 D
  9.             socket.emit('login', uid);
    8 p/ S9 s" `5 n8 [; p1 \# Y' r
  10.     });! U! ^9 w+ D# _, z) n; s7 |
  11.     // 后端推送来消息时
    . c2 v. Z4 _! o, s3 U% B; I
  12.     socket.on('new_msg', function(msg){
    2 B0 c, a0 x6 u% E  W
  13.         console.log("收到消息:"+msg);5 f, t! A% Q; B! ^1 a! x: N) }7 _
  14.     });: T1 A) Y" w; B' m( r
  15.     // 后端推送来在线数据时
    1 b% ?8 z. A- M9 z% [& `
  16.     socket.on('update_online_count', function(online_stat){
    + c) l: b$ S! ~4 S  F
  17.         console.log(online_stat);+ u9 v& U/ L  q% Q8 ?; M0 T6 o
  18.     });' F) H+ L) X7 c" F- d  j' X
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php  F- f! q& D5 p+ t$ n3 C
  2. // 指明给谁推送,为空表示向所有在线用户推送0 U5 m* g) M4 e) X1 z' p
  3. $to_uid = "";
      P/ e1 d% O4 |
  4. // 推送的url地址,使用自己的服务器地址$ M8 @3 p( l! N
  5. $push_api_url = "http://workerman.net:2121/";8 R0 I9 O8 T5 I  N/ @
  6. $post_data = array(
    5 E/ {9 J7 r& L/ @
  7.    "type" => "publish",5 q' ]9 g' P- m& z8 r& L$ |
  8.    "content" => "这个是推送的测试数据",
    % @0 Y4 Z( y1 ]4 c: `
  9.    "to" => $to_uid,
    8 C& r* D" }6 i6 {
  10. );
    ' I/ j5 C" O+ ^$ Q& O, y5 {. }+ F
  11. $ch = curl_init ();
    " h* M  U- I) V9 ]. O! Y; S
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );1 F& e$ V) {( F' C4 b9 u& h
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    8 M; b8 p9 J2 ?% l
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );# B2 p1 ^) t, o3 c- M! [" d
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );$ ~* P! O* k# V
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    : `7 T; b  X. D0 m
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    * J% x# e7 h  p7 |% w" M
  18. $return = curl_exec ( $ch );2 K7 j/ Q* P0 b0 {0 W+ x; k
  19. curl_close ( $ch );
    / A' e( r5 F3 n8 ^! h7 P8 x( n/ R
  20. var_export($return);
复制代码

+ R" K  z. F, B5 F' u# q  |
) k0 z5 G; r* n& ]+ g) X  c
* e; a" K8 ?* X8 q6 ]7 c  U* O2 t) i
% v+ Y6 v3 l: v5 R/ @/ m
本文摘自 https://www.workerman.net/web-sender
4 |- a/ n9 q. O9 W0 {. j) R
5 o# R6 j$ ?9 n
* @& ]6 x/ S; S3 X- e1 k2 D0 B4 f6 |3 q, k
* H4 J' x0 i$ P- P6 i* g

( ?: Z! W5 w+ |* E9 ~2 |4 T6 h+ }% y( h3 H7 b, G! a
9 F5 j2 V6 ^& z# W' b* W6 q) S) b
% b* x8 d. W5 |0 ]7 \" Q

' C3 g3 \3 i3 r0 R2 q+ _% G

: V+ J' M+ V- ]2 h# v
, j6 r, j2 ^, n: N3 G5 `# e
% @  A' A& X& M0 C5 q2 C, |  ]8 g

" @( ^: l& x" b  j' H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 20:22 , Processed in 0.074684 second(s), 23 queries .

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