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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:( y' ?$ _8 y' u0 [
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    ; Q& y  C" M& z7 w5 p
下载WEB消息推送框架, ?9 |$ F6 e! {8 q

6 h7 }1 n* U" x1 L( A7 k% D! a3 ~   下载19472次* X2 G; F: e1 I. U$ y5 z) }

% _! C& X. [( J& E3 [( x8 yPHPSocket.IO开发手册# d, O9 g; S* T6 r  Q  v

7 z$ ^% ~6 F7 g) E6 M
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
# Y2 G4 O3 _# e5 u/ b  Y其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


& p* |+ ~! F  @9 @" ^效果2:
: s- R; u6 ?( w% [( m

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

5 A1 x0 C, m3 _6 }4 e/ o& z- O

! b  p, _4 l/ x安装启动

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

/ t  C2 `/ e% {: M

' h, i1 Q& ?0 [5 l' d/ h2 p

+ d2 L  k$ B' G  l) ]前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>  t& R2 P" u! M3 h+ w. \6 J" y$ L
  2. <script>: O/ u5 n& p2 k
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    - D& Q$ f- }/ R7 t) K, q6 j1 H
  4.     var socket = io('http://workerman.net:2120');
    1 n3 c" I% v/ d7 x0 |
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    ) k* S) q- C; m# V/ Y
  6.     uid = 123;
    6 V8 `* M- K- d  g: B
  7.     // socket连接后以uid登录* X; C9 q5 O8 L( k/ i9 U
  8.     socket.on('connect', function(){7 \; C8 H2 U! h7 j1 R2 V7 e
  9.             socket.emit('login', uid);9 c# C, |7 G7 Z* L! C  q. E
  10.     });) p; N: }) `7 b6 f5 |
  11.     // 后端推送来消息时, d# {! L4 h; ~; [4 K6 w& M5 \: I
  12.     socket.on('new_msg', function(msg){! p3 X+ B' f9 I
  13.         console.log("收到消息:"+msg);
    + ~' |9 c) Q1 u  i1 I! Y+ S4 ?
  14.     });
    " g; H$ N. ?( v. |. k: }3 [  m
  15.     // 后端推送来在线数据时
    / V6 R9 @* z6 }- G7 Y
  16.     socket.on('update_online_count', function(online_stat){0 w  {4 Z3 h+ M5 X! F/ @& x
  17.         console.log(online_stat);4 M" x8 w6 y( G* ?; t
  18.     });
    4 i8 f/ z' }  Z2 ]# s* {: B7 n! F
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    " a, E; S9 g! b; I/ j0 A
  2. // 指明给谁推送,为空表示向所有在线用户推送
    + \' {1 u+ o& L9 e3 s8 l0 \$ V
  3. $to_uid = "";
    $ C% c! g" v: Z. s' B: Q# K" i
  4. // 推送的url地址,使用自己的服务器地址* Z4 v$ |1 e0 N2 a$ Z1 Y9 ]: w! _6 {3 u
  5. $push_api_url = "http://workerman.net:2121/";
    6 j4 X/ |5 ?$ C. u- n3 Y4 k; v6 i+ m
  6. $post_data = array(
    & O( t. l! [: P) \
  7.    "type" => "publish",
    $ T1 t2 G6 K# |0 ]$ F+ Q
  8.    "content" => "这个是推送的测试数据",: v" y- ?5 i, S( b( c( y
  9.    "to" => $to_uid, 9 d6 j2 }' g; A" |0 s4 E
  10. );. I' U  f( L7 Q8 u- v4 Q6 b, B6 q
  11. $ch = curl_init ();$ e  m! c+ R" u5 b5 `8 J2 T# r
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );1 p, l, X( k  w- O$ J
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    ! E: w& K5 ]) k. w. Y' w
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );* P" Z  Q. [0 P, B; g, G0 E6 |
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    ; |) |: v- z& f6 q# b& ?8 A
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    ; z2 D# e/ e: S5 w4 t- u& y2 j
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    5 X2 f+ A' q. O9 d( r/ F& u: w7 ~& m
  18. $return = curl_exec ( $ch );
    : [) A% l) j) x. i% L
  19. curl_close ( $ch );" z; {" Z# {0 ?& {- ?" I
  20. var_export($return);
复制代码
; k  v: y3 ^& |4 g# Y$ A4 B( n4 v
& m5 ]2 L' f: O' ?

4 S# E! ]$ ]: V/ f/ z, D5 P( t0 ~
4 G1 T* ?1 w0 @4 `! \" [
: d, G/ x+ c# t. v6 A, t$ ]
本文摘自 https://www.workerman.net/web-sender8 Z4 ~& A0 E' D; v  H, J5 }( h

( W: ]' I1 H! H) X1 X" D1 ]& m
- R/ Q9 q) g$ b0 O3 g  B
1 w  K8 }# \" k: d/ e( a+ o, ]
5 O0 W4 Q1 v' m4 T; _# v( P- y: j/ y% W0 W
7 Y3 y/ p0 V, j, d. m
; M8 v& ]7 N' T3 H" F
' r& D# H  \2 F$ P8 H7 z# s

7 o7 I7 X2 i) I
  D9 {# r& E1 s# Z5 F; m1 f
" P4 i" F! D. H% f+ _4 x8 @4 C

! X; Y& s# A$ \/ t+ j$ Z) r
. {2 o3 r* j& p! A  U* x- B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 21:49 , Processed in 0.070947 second(s), 23 queries .

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