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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
. I6 H" [9 c3 i. Q2 Y* \1 g
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    8 S' v& G8 g- Q( y/ D
下载WEB消息推送框架$ c1 q$ w2 g- f: Y1 R

, A, @. [, a! @% Q' q& t; D' ^: O7 X   下载19472次7 Z7 H8 Z6 H( ]" Y/ ~7 k. ?

$ N! W0 I' @6 e9 X. z3 x# ZPHPSocket.IO开发手册. p, P, k) z% x" L# {
* b! t% ~& k$ }" G" ~# C' ^
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
% w" }7 r" c: x6 z其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


/ G1 `$ i( a  [* H# [/ m+ c! \效果2:
! E" {6 A1 E; {4 ^, C7 ]+ E$ Q

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


, f% o8 x; e" i) P7 t( B0 U: h% l7 @4 q3 |  N; g3 G$ @
安装启动

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

; W" u- @! W" \1 r3 X0 D1 _

) }' t- h3 @: C1 T
% t; X; Q' \& D# E4 y! w: u' t. b
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>! i  h2 a- H$ c0 v; Z" L% u
  2. <script>
    " S0 V7 l0 T# o+ R
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip$ k' B8 j# F6 Q; P
  4.     var socket = io('http://workerman.net:2120');2 c2 X5 n* n; C& Q+ E* e) D+ Z( D
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    & @, r* r' r3 ~# s. c
  6.     uid = 123;% o& f6 X# l( z& z7 p
  7.     // socket连接后以uid登录
    / j: G& f! B, a' _& `1 o
  8.     socket.on('connect', function(){
    * ]. j2 q" {/ ^
  9.             socket.emit('login', uid);
    & l- d/ n  u2 n8 t0 @
  10.     });0 H( M0 |9 q6 V9 e: L: y
  11.     // 后端推送来消息时
    * o4 c4 Q' C* ~& p
  12.     socket.on('new_msg', function(msg){
    , J; R: x3 \9 u  }
  13.         console.log("收到消息:"+msg);
    . q7 g. _0 U( I+ }8 J: a6 M
  14.     });
    % g2 z0 F9 c! f# A: O0 O. a
  15.     // 后端推送来在线数据时
    ' Y2 t( s) M. A1 H9 e4 ~6 s
  16.     socket.on('update_online_count', function(online_stat){1 Q; G! F8 X) `1 Y" j9 e
  17.         console.log(online_stat);
    3 H, ?7 \0 z/ x: c# p. J$ K
  18.     });
    $ W' m) ]. `9 S0 p) h3 ]7 C5 C
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php% r, W- F3 A0 }8 n  O  d
  2. // 指明给谁推送,为空表示向所有在线用户推送
    5 k1 {+ ~( p0 h( W0 ?3 m
  3. $to_uid = "";( ^* E* A$ \7 r% \. }. v5 U3 d
  4. // 推送的url地址,使用自己的服务器地址+ n1 g2 O: T1 K. y6 h
  5. $push_api_url = "http://workerman.net:2121/";. Y1 d8 _2 b+ Y( `
  6. $post_data = array(
    ' W+ J2 i1 H/ [6 ?; H5 }: l* ]+ a3 i
  7.    "type" => "publish",
    ! F" U/ f4 Q( W# b% M& m- ^6 [
  8.    "content" => "这个是推送的测试数据",
    6 `# a! |! t4 e3 G, `% }/ n9 J( S! T
  9.    "to" => $to_uid,
    " J# q3 W6 ^, N. [' ^
  10. );
    + @2 A$ `0 g6 \  L# [
  11. $ch = curl_init ();
    * |0 e3 A6 ^* r; U* E, x
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    ( j( Q8 P1 ?1 O: ?8 }9 M2 x
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    + c" C4 T7 U  v$ R: D
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    , `+ W' P$ B8 U6 K. Z( a
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    / |& C. u) m8 V# Z# U0 f% Y1 y
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    / O* f7 W! `1 H" R
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    9 i* p8 l/ Q! w! i" Y  u0 h# ^
  18. $return = curl_exec ( $ch );
    1 O8 O* s' n! X% L
  19. curl_close ( $ch );
    0 `6 H+ l7 b6 }
  20. var_export($return);
复制代码

: \+ C4 W" [7 n9 W& i
/ p" {: j# m* ], s
; V0 S0 H3 [, `# z) W' r; W6 v: O" G9 X1 c9 K
1 o: U1 w2 T0 S/ A
本文摘自 https://www.workerman.net/web-sender
1 y: n) Y: a) @& ?+ p
! Y' w: p) n2 ], `& c- ]( f; v0 l* u/ o- ^1 \

7 f; G: R/ `) o4 V3 S0 T* B+ s- V; F% X5 B
1 O' C: n9 g8 [( k- ~8 p

. I8 a$ ^$ m9 B7 r

4 L' X* E, a: @" g% Q, ^

( b# c, i2 V' r" b  U  O: d! Y1 I& g* X" H8 |& z+ Q

+ q9 k. |8 K  z1 R
5 N6 M4 X5 Z4 K% }2 D
0 l3 X0 _! ?/ K/ B. o$ w2 J
  t; E) X! o1 t9 y7 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-9-21 15:51 , Processed in 0.144348 second(s), 22 queries .

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