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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:+ d7 M+ K% f7 N' [
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    2 {) C, L  G* G, n8 b1 K
下载WEB消息推送框架' s  \# w% h5 ]% a, N6 s4 c

% J: ?, Q& ?2 [: `1 P1 k* ]& ?   下载19472次
. _+ q* o9 z" S2 S
2 s" K5 b* e1 Z4 V2 f0 [# ^1 [
PHPSocket.IO开发手册
0 u1 V# R  k- o# g6 b3 H0 B

- F4 z6 l( l* z9 O0 U2 z' n9 a
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
5 Q, E3 A) j- F$ Z3 F5 d$ ?7 o- g2 i4 Z其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


2 _( h8 K4 U; B+ [7 s效果2:" ^7 d* _: `. l" b' S" ~

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

: @$ [1 K' R+ k/ Y+ {9 n
- p( f' X8 c9 O5 g/ x. 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


& b( j5 O1 U, K3 ?% x; }1 X) P  c5 @2 Q

/ y$ `7 X1 n+ \. P6 T' W- h5 `: r

* h. H" i+ O4 s8 A前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    2 d& l: E4 t& X, ~) \4 V" c. ^
  2. <script>
    5 N/ N7 [$ Y/ s& V
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip0 J# r) C, z2 z5 T' [3 B2 ?3 J& u
  4.     var socket = io('http://workerman.net:2120');8 D" ~6 S! e! D. U. n
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    3 }7 D  K5 {8 z$ L
  6.     uid = 123;! {: ]1 n4 u7 |1 q1 a
  7.     // socket连接后以uid登录
    5 Z, }8 U0 ^% j8 i, ^+ p5 a, `% ?
  8.     socket.on('connect', function(){
    + M- U" E7 R3 q, q8 N
  9.             socket.emit('login', uid);
    : Y, R( d8 d8 P0 {4 Q2 ~# y
  10.     });6 C6 P- Q6 s& y
  11.     // 后端推送来消息时
    - e0 u* ]+ W1 z- u0 Y& A& e
  12.     socket.on('new_msg', function(msg){* t# W) g( E0 T7 ^2 e. ?1 `3 d
  13.         console.log("收到消息:"+msg);9 W2 h$ m0 ^. E/ B
  14.     });0 x  x! E- y8 s
  15.     // 后端推送来在线数据时
    1 b2 y- g: O5 I1 Z/ w( f% k  h
  16.     socket.on('update_online_count', function(online_stat){
    1 {' |+ c( g4 \. t% n3 K
  17.         console.log(online_stat);
    8 i' ?# H) l) j. c; R3 ^) h/ e
  18.     });% d6 \1 n# C4 A  T' k' y
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php* J) c6 k. m) ^# V: v
  2. // 指明给谁推送,为空表示向所有在线用户推送) T& z3 V+ D% U* c# Q' e
  3. $to_uid = "";, t/ O9 G4 Z3 S  C+ D& L8 H
  4. // 推送的url地址,使用自己的服务器地址* r/ O* f) y/ K7 D7 d* a/ a; u
  5. $push_api_url = "http://workerman.net:2121/";% o) @; e, ]) p8 N' g! m
  6. $post_data = array(8 y9 S- g! S( [2 R( z: E  _" g
  7.    "type" => "publish",
    0 w4 u8 ?& m& M; n/ o( q% b
  8.    "content" => "这个是推送的测试数据",1 U$ J7 z% H! [/ m) {
  9.    "to" => $to_uid,
      d" ?, ]; ^2 z1 X
  10. );
    1 ?4 j, }" K" k
  11. $ch = curl_init ();
    1 |+ d0 E" [8 q6 e
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );  r/ t8 n8 |8 m- r
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );4 c, L) b6 p* E( I
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );# N& D+ `  i0 g5 n! l& F1 J7 J" @* z
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    . U, ~; J) h. ]3 U/ Y  W) Q+ M. F
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );& V% I! ~, J( b" H- }
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    / N- p8 Z' U" `1 q' q
  18. $return = curl_exec ( $ch );9 p) ]! r. r/ [+ i
  19. curl_close ( $ch );: s% _$ f2 A  m; S! R+ j7 m+ C
  20. var_export($return);
复制代码

1 J5 ^- O7 X! }
# v: r& |* x8 a
2 r; R% ~$ x$ @9 J' E
+ P. ]0 d, p: }; u% B7 J

0 _- X& j4 `3 k& D本文摘自 https://www.workerman.net/web-sender* w! A9 c# q! _: a

9 ~4 z0 Z8 `& x, h& \  N+ x# u; R" h( G1 o
; ], x) D& `- X3 E" p

  q7 a$ s; \: [1 ?) y2 X/ g/ E
5 {9 L% g* Y9 k0 ^& m0 F0 Q, b- z& \* |1 S( X
8 e% E# Z+ j1 |" n7 v# L+ e" t
" X! g5 W; v$ s) O- Y0 m. [9 H
7 G# E; T& `  Z  _4 k' \

8 j0 h! M3 j. a; h* k" Y, B+ `, _  y2 M) |" k! x$ w5 ?3 V
* r; y/ q1 V) i# O) K3 @

$ R* _# O9 y$ M; u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 22:56 , Processed in 0.065266 second(s), 22 queries .

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