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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
! R- m" W! R0 C7 X
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    0 k7 |) Z0 G* x5 W
下载WEB消息推送框架
5 F+ L  L5 x# H$ G% m) e
/ v" O2 s( d! v5 _+ n
   下载19472次
$ U' z! W1 v, U  `, u. _9 f$ R6 Q
6 D% t4 D' E# s/ e0 R2 u
PHPSocket.IO开发手册0 C+ k, A; f/ u3 |# k9 v

: M- l$ p- n5 h( A/ ^: c0 t9 W! u
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
- ?( ~: E) I; P2 }其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

& ^' G/ D1 \+ B- M5 w# t
效果2:8 u7 t8 p/ \, k+ @' i

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

; h2 W/ W+ r& Z

7 @& I6 }% ~, d安装启动

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


! ]) Z: T. P2 n* ~& X: T1 k+ x* l


- p: l8 v. h* X4 H  v6 o
5 }5 q2 [$ g7 v" t; N( N* z前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>9 A# N) L' E$ i- e1 E, s! X
  2. <script>* F3 ~; ?: e4 U. `
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    # U9 w: ?: `$ m- W
  4.     var socket = io('http://workerman.net:2120');
    4 _& ^* t! T% k$ }) W9 E
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数# Z0 L5 v1 @6 z, G$ @3 x
  6.     uid = 123;
    & O- l: w4 }  i6 E' u+ w
  7.     // socket连接后以uid登录
    , W2 L& v# h; q& H1 u* E
  8.     socket.on('connect', function(){
    * X' w0 u$ \( k1 R5 `% W1 ^
  9.             socket.emit('login', uid);) z1 y0 K, I) k
  10.     });
    1 E% U7 v( v6 v# h) R9 n: ^' D8 l
  11.     // 后端推送来消息时
    5 I5 W9 ~1 j4 ]% Z
  12.     socket.on('new_msg', function(msg){# \; ~3 i% r2 m  v1 C3 a6 b
  13.         console.log("收到消息:"+msg);% |* A! S6 y. Z' T8 N! s8 v: x  C
  14.     });
    % a8 K5 U$ u1 O6 r
  15.     // 后端推送来在线数据时( }7 C& J! z6 g8 f
  16.     socket.on('update_online_count', function(online_stat){
    5 B% y' |& `) d7 F# Y- O8 V9 w
  17.         console.log(online_stat);2 p4 ~' N0 Y* _6 i+ ^: l+ X
  18.     });, ?( q; i5 E  s1 k; Q4 \
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php3 @' u: j4 [& j& v9 ^  F
  2. // 指明给谁推送,为空表示向所有在线用户推送
    3 M8 z- _$ V: S; x! f. S( L
  3. $to_uid = "";) T! n7 a1 N- Z" {  I" u
  4. // 推送的url地址,使用自己的服务器地址
    ' Y* c( d) ~& s5 x6 [& _
  5. $push_api_url = "http://workerman.net:2121/";
    : E6 C0 g3 k9 s- e! k- V* q2 k
  6. $post_data = array(- T) t  ~1 i  h# P6 _$ N- U
  7.    "type" => "publish",
    ( ]% H1 l8 m- k' |. V
  8.    "content" => "这个是推送的测试数据",/ S, ]# S' s/ E& x8 V0 L1 Y
  9.    "to" => $to_uid,
    + n$ m6 n4 E& Q# o' w
  10. );! K. [* h% a6 R4 [/ \2 {
  11. $ch = curl_init ();
    0 @" T* u  Q: P( i
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );! v( F5 D1 o1 F) I* e7 h: v3 P
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );5 Z; F: t8 v# W$ p( U8 e2 a# z
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    ( H" N# G& H6 e
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    " r+ ~. l/ J5 x. O7 V3 w% U
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    0 E6 g" Z; A% [5 x
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    # r* K  G1 X# [( I: y) ~
  18. $return = curl_exec ( $ch );1 k8 _% r# }' @' c! l! p
  19. curl_close ( $ch );
    / C8 _6 v. F, u: @
  20. var_export($return);
复制代码
$ f  y) S9 n+ z7 w3 {

  A! n6 E, E$ g; l6 R. \- _( T/ s& D
, ]0 M) U# i0 P$ e* S
5 @- {* c3 h2 ?4 M. O5 @% j) U

2 d5 q/ \; \# y本文摘自 https://www.workerman.net/web-sender; h+ O$ Z2 g1 e9 O
( c7 m1 R! d# |& j8 o# E- D; l

4 [. ?; W, t- U+ `& _, l+ Y0 b# F# d; u
: ^( F- z$ k5 l6 [7 C: @

0 |: F$ j* K  N5 }& W. n+ `- V/ ]) m  I+ b+ x) }
0 g/ `) |' ^8 R, T- J5 m8 M

2 B% z6 C7 ^( h  ?
; Z; C  B' ^7 w% k
  Q( a; T, A& {8 ?1 ^3 M" E

0 H: e0 Y3 d1 E+ T) Q

& q& `2 D) W' C' P1 j
5 j! Z- S: b  k) D% j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:20 , Processed in 0.051359 second(s), 22 queries .

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