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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
7 L: n' N+ L. h' P* E
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) . e$ [2 b1 f8 O- B; u$ P
下载WEB消息推送框架
& y2 K% Z' X6 e: U

( b% _. p+ `2 ]5 x6 z( N+ u   下载19472次$ C9 n  S# J3 F1 n
/ Q1 Q5 V+ T3 t2 L/ J/ a
PHPSocket.IO开发手册
8 C3 s: v% y2 k8 t) Y6 h7 _1 S/ x

3 o7 e1 J4 {. G0 u1 i8 }+ I, M9 c
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content! k: `2 q3 }, q0 u2 E
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

7 ^7 w6 \6 b4 M
效果2:9 {, Z" Z: j) @3 b0 w, k

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


5 W3 W1 N3 H1 y6 d2 g8 t
% `$ S$ F- i  Y5 E4 B5 v+ r安装启动

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


! d  }) i* A! `' d7 N- o- P- S' a


2 E* I2 J  m9 r: N6 V+ c$ M, B+ @7 {4 j& A
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    0 J; B& i& y8 H* r
  2. <script>
    $ o# E& o0 ]6 \* R
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip+ S4 }% l& `& a  L0 _! I6 F
  4.     var socket = io('http://workerman.net:2120');  }9 x* e8 D, J4 n# `- {0 z5 F% M
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数' w1 H' Y2 l, ~
  6.     uid = 123;
    ' j7 p7 ]+ E" e2 `% J- d
  7.     // socket连接后以uid登录
    5 t6 Y: `8 k5 w9 s- N
  8.     socket.on('connect', function(){
    & [  Y9 d: d+ \) E1 d! x
  9.             socket.emit('login', uid);
    5 C. s$ V( G% C9 t' ?+ h$ z! ]0 |
  10.     });) Z% p: d2 j, c# I+ r
  11.     // 后端推送来消息时# Z( e0 o  F2 R1 W- P5 F( X6 b7 }9 d
  12.     socket.on('new_msg', function(msg){
    : c, ~" w% U7 }  Q0 F. P. w
  13.         console.log("收到消息:"+msg);. e. y1 U( i9 F; o4 V) ^! M
  14.     });
    0 ^  n* N& x4 h
  15.     // 后端推送来在线数据时
    9 f2 O0 t1 h6 f3 s
  16.     socket.on('update_online_count', function(online_stat){0 t  n" k! x: u' D, J; v
  17.         console.log(online_stat);
    / |/ Q: ?( X: o! u- z
  18.     });+ p' t# ~9 {; |
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    , r  x/ s1 u7 Q7 @" e* b" ]
  2. // 指明给谁推送,为空表示向所有在线用户推送: H0 h2 g# z* a* `: E+ X
  3. $to_uid = "";
      K+ H) W- f6 B. q3 ~7 K
  4. // 推送的url地址,使用自己的服务器地址& ?5 w1 U% z; R* v
  5. $push_api_url = "http://workerman.net:2121/";' J7 E( ^+ N4 }* ?( P$ r0 T, \" n% |
  6. $post_data = array(
    - e9 h6 _5 r' K" h& s9 s
  7.    "type" => "publish",
    - P' [/ A' k% l1 q
  8.    "content" => "这个是推送的测试数据",
    4 P, i' D9 A9 ]0 Z3 h7 p* d( h8 g5 y
  9.    "to" => $to_uid,
    + z* n$ N  ^& `2 B' p- U) n
  10. );0 k, ^4 p! U7 W. ]- a
  11. $ch = curl_init ();
      J6 W$ z1 C/ b9 o; C# ^
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
      B1 Y* s. G! X- a0 w; G! h
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    ( p( t2 h$ M' \5 `) g) A+ Z( r9 y
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );' m6 O! U6 A- \0 z
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );% v  r1 `; z) E
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );" @1 A+ Z8 X/ R) ?/ U. n" K9 |4 e- j
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    4 y& m$ E% S/ k5 I7 i# t* `
  18. $return = curl_exec ( $ch );) e* F: v7 p2 ?; g8 ?- [7 s
  19. curl_close ( $ch );
    8 R+ ^; n1 A- O5 n) }0 Z. J
  20. var_export($return);
复制代码

" k7 ?9 @" s. m* R& X* Z( a( {) u; ?9 x
8 n9 r( X$ K* ]
" u$ P; H0 z4 y) j/ p( K

# y6 @- R8 {5 Z* u1 \4 b本文摘自 https://www.workerman.net/web-sender
' y  H/ q: u2 |' v3 D: g: Y/ Z+ t1 g, \% z  I1 d0 v9 V

' q0 Z9 i, ?) J5 `! `3 {8 o; a0 ~; N' [2 h
7 O8 l5 c3 A$ D) T  |
7 O: j. s- e' S. U+ F: @4 [4 C
0 ~$ D2 ]; q" t* L3 [( }# e( y

2 U- a2 D* m+ C+ \' U
2 x/ Q2 ]4 {0 m8 z
$ y3 R! l  v/ `4 v1 e1 m
4 W7 ~) g9 B- ]3 ~0 h$ b& h

! C# I% P5 j# f2 U. E- K7 z

7 c* r) F; d7 h& C( W
4 L7 \* q6 i4 ~( a4 @; Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 11:39 , Processed in 0.064596 second(s), 23 queries .

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