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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
; B: x# T8 w3 Z3 v3 W5 F3 p
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    ) ]( u# m& Q" y  w3 e/ l1 N
下载WEB消息推送框架
6 b* z  F2 Y( j
8 Q" T7 i& z5 m7 ^1 M, c/ v
   下载19472次; Z5 E; ~! ?9 Y; O: o
1 j2 M1 @3 s- c! U' l
PHPSocket.IO开发手册4 F9 K8 a; h8 t# d2 d8 ]+ M
9 O0 {8 A6 M+ \! I! d
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
" h8 x3 w8 _& {其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


" e8 Y$ p0 F# e7 `+ A效果2:' Q0 N7 ^: i6 X; u8 Y

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

: l8 ~: `, c( g9 ?' O6 t# P& _

3 g- b' Z0 a7 j: y1 I安装启动

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

4 i: c8 g* m7 p, d/ `


8 a$ R7 k3 z6 S1 `7 k" l: z+ G5 }6 E4 P* X
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>5 ]9 }" |! Q5 j
  2. <script>
    " e) ?& }4 s: |3 C
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    # l8 A" p5 b8 ?0 Z! \
  4.     var socket = io('http://workerman.net:2120');
    " d; P0 j3 k3 W) d' C* W5 K
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数6 K/ X9 T7 i5 U$ l
  6.     uid = 123;
    - Y1 j! I! O2 w
  7.     // socket连接后以uid登录
    5 I5 t8 P: a. D& P- U
  8.     socket.on('connect', function(){$ _+ ~' L" H/ d; x; x
  9.             socket.emit('login', uid);
    * a# S% w( V' B
  10.     });
    0 f  R0 I% _* u9 y! P
  11.     // 后端推送来消息时) J: j) _" p/ K$ l9 D. B* K
  12.     socket.on('new_msg', function(msg){. e3 q2 l' ]6 H" E/ D( P7 I* ~
  13.         console.log("收到消息:"+msg);; [; t4 o& A, y$ t: L4 F
  14.     });
    & W4 f: I5 m$ K; h: ]' J
  15.     // 后端推送来在线数据时
    5 w5 I/ O2 A9 v: L2 ~1 H
  16.     socket.on('update_online_count', function(online_stat){
    & Z; T9 \+ y# B% K' q
  17.         console.log(online_stat);
    ( u  A6 z: p2 ^: f. o3 N
  18.     });
    , m4 o+ Q2 p  f0 D4 D
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php4 j' j4 i% b6 z2 t5 d, o
  2. // 指明给谁推送,为空表示向所有在线用户推送. e& G* n6 u/ g; F! y
  3. $to_uid = "";
    . b1 F. P# j1 g  a
  4. // 推送的url地址,使用自己的服务器地址7 O1 t: v9 U8 Q; x! U; C
  5. $push_api_url = "http://workerman.net:2121/";% n# x4 J% g) _3 |% J9 n
  6. $post_data = array(. f& M. e! x0 m; Q3 ?5 b8 \$ r" o) ~
  7.    "type" => "publish",
      E! w" F; k( N, X9 {( }$ p8 I
  8.    "content" => "这个是推送的测试数据",
    * Z# {2 [' K9 u/ A! I3 s
  9.    "to" => $to_uid, , t* p, ]5 N( R6 @( U4 [
  10. );; R. j' Q8 J; W; R
  11. $ch = curl_init ();% w, B# r9 y, Q- D6 c
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    4 w$ X/ h0 p7 u5 }: m; R
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    - C! b& I# [2 z0 H% Z
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    , }/ ~* f1 A/ g) I; P- g
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    - s  N- \' S/ ^; D% `" `
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    5 ?5 G8 [& s8 ~* R; y1 m
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    ( U/ {+ s2 Z0 v& L0 Q
  18. $return = curl_exec ( $ch );
    : z  }2 B& b* V4 I, D4 I2 `& ?8 r
  19. curl_close ( $ch );
    ) x! c8 o' L/ p- B4 y! ?. V
  20. var_export($return);
复制代码

: g0 v' {# C* z% S3 t2 Q2 k2 a2 \0 P3 j2 K0 X* w" e+ |
$ l" Z$ A+ p: R9 z, c6 }

6 n1 w7 E8 H8 ?" k0 M

- p: a6 O* [* Y! _4 h( `本文摘自 https://www.workerman.net/web-sender
  L# k' o2 D8 V+ k7 a" H: H: M2 n$ m: D+ A
  ?) S+ Z; i8 F8 p8 ~

8 A1 k: |' j- V7 U# D0 c, h+ ?8 Q$ G  b

% k" A! O6 i) K  @. M$ r' Z# [  R7 s% Z1 Z
; s% F$ V2 E; ?( \# W

# N6 \  _/ O8 g/ r/ M' A
0 b  s- ~! v. S" y# M

* J( `4 a; |( X0 b9 e3 a0 T  k
( i) G3 F3 {& d$ i3 o. s$ c$ G
: u0 C( o( I' e, N# o+ {0 d
4 _' d0 R/ Z; A5 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 02:54 , Processed in 0.126500 second(s), 23 queries .

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