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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:0 I8 l0 d, b4 y0 }8 p( C! s
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)   e) y' L. D4 ~. f
下载WEB消息推送框架: u. j6 a( t6 ?7 E$ [) i) x6 m
* q% q7 J/ x1 x3 C  ]) }
   下载19472次8 X3 V/ z  s) g" t
# O6 L& O% I3 ~) e& t
PHPSocket.IO开发手册4 d4 f$ X- _  |$ T" B6 H
9 D& g/ a/ e5 n4 P# |# s
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
; Y* y" }0 @2 X5 D) j+ F其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

( x2 y# m6 x0 S% R4 j
效果2:
5 {( ~  j: z; \$ [0 H

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


  S) m' d, U5 P2 |8 l
) F- A( X3 {0 s- J# h安装启动

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


& o( F0 b/ I; I' ?3 v

. o( o: ^+ U" n1 m/ w' |$ j

+ \* `! p% c7 k7 p前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>' m6 }/ ]' x6 M. g
  2. <script>
      R/ b  u% @% x" z* h/ _
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    ! X5 g  _: k4 q- L; @5 O" a
  4.     var socket = io('http://workerman.net:2120');
    6 o9 X6 z* m" ?) b3 h5 l
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数7 O4 T' [4 @5 n# l! }% ^8 X
  6.     uid = 123;" J: q' ~% x8 S/ d( f: h/ X
  7.     // socket连接后以uid登录8 S9 ~* r2 l/ q, r  |# z( x) v* E1 m
  8.     socket.on('connect', function(){8 X1 ^  [4 Y4 P% X
  9.             socket.emit('login', uid);
    * ?1 R, F0 Z# |/ W
  10.     });4 E  {3 H4 w, `* i6 l
  11.     // 后端推送来消息时
    * {. A) x4 m, o7 b: G
  12.     socket.on('new_msg', function(msg){
    8 G. G) U7 B' t5 Q
  13.         console.log("收到消息:"+msg);
    2 ~7 Y  g4 w$ y+ C
  14.     });
    ( I- G, {8 P! v" E6 T! \) y
  15.     // 后端推送来在线数据时
    & k9 c* K6 y4 a
  16.     socket.on('update_online_count', function(online_stat){
    * c, G7 a% C1 i* n3 r) Z9 p7 [
  17.         console.log(online_stat);  I& |1 ?# V5 E. ~! X6 S
  18.     });1 N, }3 M1 B( V
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    5 S, ?4 x# b0 ^# z8 w! R+ w
  2. // 指明给谁推送,为空表示向所有在线用户推送
    & D3 J6 o9 G+ ]& q/ T0 d
  3. $to_uid = "";& y3 F0 Q/ X: F- `  L" ~0 F- ~
  4. // 推送的url地址,使用自己的服务器地址
    % v3 D/ {( H7 L7 y% B
  5. $push_api_url = "http://workerman.net:2121/";
    % c; |/ A+ W4 n- g3 _/ {# w/ L
  6. $post_data = array(/ Q9 h. W' U3 a3 r8 y
  7.    "type" => "publish",' }& F4 M9 V9 u, ~4 S
  8.    "content" => "这个是推送的测试数据",
    " j) r: z9 i0 ?' T2 z4 D/ M
  9.    "to" => $to_uid, * l5 W# \3 [3 P
  10. );( ]0 z( e5 N  i/ ?% K& f0 z4 ]
  11. $ch = curl_init ();% J* P5 `8 U  ?4 u
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    . ^3 a% ^3 F: x9 f( E5 l
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );3 {- J: `# A6 L" _- T
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    " g8 U$ o" C6 w3 ^% n
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );+ J! e. p* S: P% o) F
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );: O9 t8 {0 P! i( _: g2 ^
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));/ M2 H, ^4 E5 D; r! k5 q
  18. $return = curl_exec ( $ch );
    9 x2 t, t3 q& `* b) @9 ~
  19. curl_close ( $ch );
    : X$ O$ N6 Q: e# l- o" A0 A
  20. var_export($return);
复制代码
% }1 w+ T; N/ Z" y* {
9 B& K* u. j  o- j( e
' c% K6 e; h: [( J, i
+ Q+ M* x/ N: z, C9 ~1 X

4 r' R3 j5 `! e  W本文摘自 https://www.workerman.net/web-sender7 h3 Z0 ~; V) h% e4 H* s( ]5 K* ~6 r

! r. m7 S  h5 u0 T3 P' h
0 R# K4 I" t+ Q3 s! j1 @$ N9 ?8 k/ l/ ]6 O9 J

2 J0 z# W* U6 o$ M6 U; u7 C
0 K; @/ \+ e: b( Y0 H4 V
# e$ C7 n" e2 C7 ^6 l$ z' x; \

: V" e5 l- N5 o! X! X2 C8 h! m4 l

& @, l7 M9 g$ F4 ^8 `
5 H& v+ j* s& w& s" J8 }& f
' B+ F, `) Z- i8 E  }  u. t

" h$ _) s" g6 \4 [. O  ]
/ Q2 O+ Y' c) Z9 W, `& o: i+ F

, H2 @% I8 e( z" h: c) N; q  M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:08 , Processed in 0.055487 second(s), 24 queries .

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