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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
$ _) P- R: D" H/ [* _5 h
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    / j/ O# j2 \7 n; p2 g9 a# k; h
下载WEB消息推送框架
( u+ v: A' s3 z1 r
+ l- L# Q# N  Y- X
   下载19472次: T' T: n, T& L$ R2 }8 o5 p& G
9 d2 n5 Z8 S% [% Z
PHPSocket.IO开发手册
' f2 d2 _3 F( l" `

0 n7 ~% A; R4 C* C. i$ r1 @# B
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
3 u& ~+ W: O0 d, Y- b: b6 Y其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


# I. L0 D% C. z- e9 D效果2:
. o  X3 Q2 a: c7 x( s

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


+ u  u/ c: Q' O4 a% u
) q) V! ]2 {% B) G" `$ K7 v安装启动

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

* I4 x# g; K) {

( S" x" [. C3 `1 ]5 e

) S! g; E( g& q2 e( D$ K) z前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>+ [3 w! R" m" _7 j$ w; t$ q* D
  2. <script>
    7 a/ c& U4 p5 M( W! z! s' k  m
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip6 l2 U% ?( Y' Q) y* w
  4.     var socket = io('http://workerman.net:2120');
    0 ~( ~' o) V1 g; I4 b" Y4 j, R
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    % \" t6 c' N# C) e+ q" Z" _9 X
  6.     uid = 123;8 w# b; }! K- [* {& ]
  7.     // socket连接后以uid登录- ]4 ~& |3 r6 y5 {3 D$ B( W+ k
  8.     socket.on('connect', function(){; w# g$ P. T  G3 j7 c# B7 l9 p
  9.             socket.emit('login', uid);
    ! W6 N- Z1 X3 r' h2 R! X8 t
  10.     });& r7 |9 L* r$ v" J7 ?
  11.     // 后端推送来消息时
    , j3 w: q# R+ [5 H6 k4 v5 J0 X
  12.     socket.on('new_msg', function(msg){
    ( o% H0 @- S$ Z" M& t' S
  13.         console.log("收到消息:"+msg);' \) \0 f) Q( D% P
  14.     });8 _* N$ G. Z: A4 Z  z
  15.     // 后端推送来在线数据时
    9 ^$ b! q( i! N
  16.     socket.on('update_online_count', function(online_stat){
    $ z1 a# f: s1 V8 q$ D
  17.         console.log(online_stat);
    4 a8 S  i. v7 V$ N( m! Z
  18.     });
    " x; Y; w  e3 E
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php2 J! |, d6 `5 G
  2. // 指明给谁推送,为空表示向所有在线用户推送
    2 M& Z8 B' w6 P! E9 \
  3. $to_uid = "";
    7 ?- \0 ?* d/ i+ G2 n
  4. // 推送的url地址,使用自己的服务器地址4 M) k4 H* z( @' G: m7 l& S& _' U
  5. $push_api_url = "http://workerman.net:2121/";
    - f+ W9 x1 ^# F; f+ K( k& D
  6. $post_data = array(, m6 u% J8 M% j& v6 N7 L
  7.    "type" => "publish",; v3 U0 Q3 M( W- P, Q8 P
  8.    "content" => "这个是推送的测试数据",/ C4 H  Y- u( ^8 [
  9.    "to" => $to_uid,
    % u; d3 J0 }' ~" }* U0 `
  10. );
    0 q" ^& G8 U1 i4 C5 C" I. j1 |
  11. $ch = curl_init ();, ~( u2 _* _( P+ o$ w( O, s/ F
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );+ P0 X8 C( p% N' r% G: H
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    4 x+ o0 I3 Q. i2 c8 o) z  m: U; m
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    3 Q( W6 R9 |) l& y1 T' L7 w
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    9 c& |1 e% t$ e6 G; y1 O
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );$ U4 k% i+ D+ c! t  t
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));* k" n. I8 s% _3 \
  18. $return = curl_exec ( $ch );2 a. W5 I7 p( L. q9 {" R
  19. curl_close ( $ch );
    1 @& s( x1 s3 U. t  |3 Z% `
  20. var_export($return);
复制代码
' x: l' H. O( n! t* G. O

2 K. f4 d6 m4 b. D# U: ~
6 Z* J, f2 t4 M; w9 H2 ]$ ], m2 D& \% p6 Z7 Y$ R9 x: W- p6 n
! V! V" |: a; H$ o! i
本文摘自 https://www.workerman.net/web-sender4 h7 p8 l% h6 i" E+ y+ m

* {* J; E% ]! t2 O2 j' J: d! k+ s* p! @' ~5 f8 D
0 d& X  v0 H/ {! b7 q

6 |" k5 `1 D. j( h) n% M% V8 |) P" P; f$ W0 l1 g% {
, a9 c" T9 Z7 ]) B3 q
/ ?; O% Z& I+ K1 ~

9 y( [5 R& P" v1 V0 z9 w5 ~6 ^: y- r: Z" d9 Q
8 {1 A% Y0 T( u0 o5 J; {  g

" f. S' i+ C+ K9 x2 N4 V
9 G" w9 |# h6 A4 p: g

' \# {" J8 u; y; Q2 d; a' i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 20:19 , Processed in 0.124303 second(s), 23 queries .

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