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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
5 ]- o3 V* ~8 v
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    5 U8 {* _5 E7 t, C
下载WEB消息推送框架
) w$ d  m. {% X) W
6 o' z3 E7 B4 S) _  v. [
   下载19472次
, X+ j% N; D/ {- `( }, Z
/ E, Y$ w7 K4 g1 t  l
PHPSocket.IO开发手册
) C0 B$ ~4 r! U, Q6 K$ c

+ C, }8 K+ L+ a
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content% Q6 h, U& M; d8 }: `# c
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


5 d# C6 K: r, w+ i0 w) C效果2:
: z& S! g0 |' _, c* ?) W3 L

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


  g' X5 `$ I3 Y8 a
/ R5 v- ~1 F0 Y安装启动

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

- U1 E+ H: \7 s1 L9 \

4 w# T$ }0 n7 H! s5 r

0 L9 `2 p+ d  T前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    . N, x7 g! G$ ?& ~% J8 g
  2. <script>1 Q9 w+ C' J( e, O! s
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    , R9 `' b7 M* x( K# m4 A
  4.     var socket = io('http://workerman.net:2120');
    4 i( G# e& i  C
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
      S4 N! l' Q% L4 T( ~. N5 {
  6.     uid = 123;1 L7 Z- K- Z. _
  7.     // socket连接后以uid登录, \1 b5 q6 L* c1 y& w, M5 U0 m+ {
  8.     socket.on('connect', function(){$ x7 R: }  L  T
  9.             socket.emit('login', uid);3 f. B3 o( w3 |
  10.     });1 p0 x1 ~( @9 k% K* n7 ^
  11.     // 后端推送来消息时
    1 J/ d  |, Q% m9 V# ~
  12.     socket.on('new_msg', function(msg){; d) ?. u, F$ g: T8 F
  13.         console.log("收到消息:"+msg);
    + w: U) i2 S, e9 X! |
  14.     });
    ' Q0 _: @  p1 z/ e" D* r
  15.     // 后端推送来在线数据时
    $ K; T( M$ m; B/ F% s: y5 n8 I
  16.     socket.on('update_online_count', function(online_stat){0 Y  ?' a; i, I' V9 [, {0 D* z
  17.         console.log(online_stat);( W  e! k1 e' z7 R4 w) K, y7 E4 F
  18.     });/ U2 F* }/ _' g3 k, f( e. y$ T8 x
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    . I7 E6 c* t- H" P; E
  2. // 指明给谁推送,为空表示向所有在线用户推送& _$ G" S  y5 w* F, t( B0 P, v: z
  3. $to_uid = "";
    # r  }1 U; b# Q
  4. // 推送的url地址,使用自己的服务器地址& ^3 Z  q, o! B- v/ z9 @
  5. $push_api_url = "http://workerman.net:2121/";
    9 L$ |) P5 B" n# V# p( u/ u# W" l
  6. $post_data = array(; k/ u/ g, i0 J' B
  7.    "type" => "publish",
    2 |5 y' W6 _6 u4 [  h
  8.    "content" => "这个是推送的测试数据",
    1 F) g) m! n) X, B6 d3 I
  9.    "to" => $to_uid,
    8 }, j) i3 ^+ P( x
  10. );
    2 ^/ C4 @* F4 N( k( n) r0 ]- T
  11. $ch = curl_init ();
    ! @2 W1 H. I4 b& d& L1 M- e1 H
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );& k, e5 D) l) C2 o# _& U* \
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    . s+ h% l8 ]8 ]2 C! w0 v: d
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );8 I4 v1 w9 @' M1 |7 C
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );. P/ H+ ~& @8 R# J
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    " P, K$ K1 c- U0 u
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    * }0 Q6 P- m5 c% h1 B% ^6 ~6 x
  18. $return = curl_exec ( $ch );6 z0 _% j5 X! h2 }5 o) D  ]
  19. curl_close ( $ch );
    0 I3 \3 z3 Y, V- Y9 Y* w: K
  20. var_export($return);
复制代码
' R2 ]" P8 Y9 D" D3 v( Z5 }% g5 o

4 R2 C2 W  V9 K$ y; o  o
, T! P( `, J  I
, D' K& s( t8 k7 L4 k
* m7 K3 J$ y& l* ^: t
本文摘自 https://www.workerman.net/web-sender
9 Y* D( P( }& C9 {% ~* t2 F) n% u6 |
2 J, e  V, Z- K3 i- u- r. F
& j# h! |8 v% Q

4 L1 o. d. ~: U9 O5 z3 M) S
! G5 W" q; X1 t, n- Q. e% q
7 f8 d! q2 Y% p  B: Y' p

% d7 ^! f1 F3 r7 v+ I' X: y2 A1 G( J

( v3 f. j( K  |8 e: Q: @6 q: x1 Q1 y
- m9 x9 f/ H/ z' z
+ o' s6 H" f+ P5 b$ ?# x
8 w2 |/ A0 Z8 S( t- {% T
: x( m: Z: ~4 k9 \$ q+ {7 r9 K
0 g0 {1 M$ N. t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 22:04 , Processed in 0.060889 second(s), 23 queries .

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