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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
- Q7 f/ K$ {) W# A
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 2 ^0 c9 b, ^- M; }" g( i
下载WEB消息推送框架
$ }3 Z% n$ e3 O
! }  A3 o7 ]0 g  ]) Y; @! Y
   下载19472次- T  U) @+ Y# g! P7 I
' b' W( N( h. s! ]  ~
PHPSocket.IO开发手册
3 V! P5 ~$ S0 g/ o- `: t" c
5 p' B5 H" ^/ _, O# Y) L
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
/ [$ W7 n5 M1 O) C6 `2 y其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


5 V, ^' d9 E, z, e+ ?- ~2 o! A效果2:/ }/ p$ h2 @' |& u

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

2 y( U" \% u% i( C; O

" s1 ^& v$ U7 ^& F2 j; i+ {. L安装启动

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


; g( S4 ]2 }5 H! K2 z3 V, _

; _0 _5 ]. C" N9 O) v

' {2 @8 D# @6 q  h/ s" {前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    + F+ [( O4 E2 B4 U! {1 _% r; f5 U( B
  2. <script>6 i1 l" `. I3 v6 }7 a
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    9 j. D# C8 ^* M5 u/ n7 b3 C7 s
  4.     var socket = io('http://workerman.net:2120');
    # j2 m' Y1 T$ p) [) K+ E( d# V+ H; C
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
      g8 ?- ~3 _) h- Z& q) M
  6.     uid = 123;
    # }  {+ Y) U( [6 O
  7.     // socket连接后以uid登录
    : C+ v- c: N  |
  8.     socket.on('connect', function(){
    1 t5 b* s  A8 `$ ]; @, e0 J: o& c
  9.             socket.emit('login', uid);+ I- ~+ i3 i7 f2 Q; K3 k
  10.     });
    " M2 I- @+ c! m/ U
  11.     // 后端推送来消息时
    7 U7 Q* n) W; \3 Q
  12.     socket.on('new_msg', function(msg){$ R8 y: t  \5 o0 X" Y
  13.         console.log("收到消息:"+msg);. D2 M+ v3 Q4 R$ }4 [
  14.     });
      E) b2 g/ ?! M/ U3 b2 Q4 L+ ?% J+ g
  15.     // 后端推送来在线数据时
    8 t/ ]# ~( ?7 t/ v$ D0 b7 }
  16.     socket.on('update_online_count', function(online_stat){2 T2 U; ~' }$ P5 T
  17.         console.log(online_stat);
    . a" K; l8 `% u6 S. A
  18.     });- T- \6 u/ q2 `0 m. @
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    , W; y0 \3 F% Y- Z0 u- }# o
  2. // 指明给谁推送,为空表示向所有在线用户推送: ?) k' o" J$ F* u& r: }
  3. $to_uid = "";7 m8 v1 a+ Y# B9 M5 y' d
  4. // 推送的url地址,使用自己的服务器地址
    8 k# {4 d' P% D5 q8 p3 m9 _2 K5 s
  5. $push_api_url = "http://workerman.net:2121/";. e6 T. N. Q3 g6 T0 k
  6. $post_data = array(
    " }6 m+ L& b7 M  g2 G
  7.    "type" => "publish",: l" O, a7 k( L
  8.    "content" => "这个是推送的测试数据",
    4 a9 O: V( U& L, I+ ]
  9.    "to" => $to_uid,
    7 B7 q6 w- ~, }" v; Y
  10. );
    1 f3 V6 H) d) U
  11. $ch = curl_init ();4 ^: \3 M8 Z. k. K1 j
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );" e2 V' C" {  ], L$ ~+ f* ?8 H+ ^
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    * ]6 h" `5 r: n) V
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );9 d9 U8 U* X: }, z$ i8 ~+ j
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );, _, D* }& [' a% x3 R  t' b
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );3 `9 m" W: \( D. d- x) C3 D: [
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    ( b; g: y/ o1 M% L: a7 J
  18. $return = curl_exec ( $ch );% T$ f9 o. m. A
  19. curl_close ( $ch );
    3 }. K, @, n  `
  20. var_export($return);
复制代码
- R. C+ O2 u# G2 d/ ?+ W

: l3 F) ]- l" `0 [7 ~: X1 M8 b  z
9 {! ^7 n6 T# j7 L* j  i% ?
0 S  x6 w9 _+ v! }0 y
% K  T) I0 C3 s5 a' P
本文摘自 https://www.workerman.net/web-sender
/ T0 U! w7 O3 p  s" c, r: L0 O5 n0 \1 [7 |& Z6 H4 N2 j$ x

7 f$ o/ I8 n! N8 G4 z  i* _6 b: O3 K, n& F7 V& E1 f# c' Q& C0 {  G
5 Z- _+ {6 s- K" b/ n7 A$ d8 h( u
9 A) M2 d2 Q1 J" J
' N1 {$ W* T  P

- B0 m! ^+ }7 E, B9 s2 o- [

- f! ^3 e( \8 F( [. ~. K( F+ ?" l4 ?5 z
3 H6 x; Q) V( H) @- U8 l3 y1 P
0 }* Q. e/ ]6 }5 H9 t+ O
* y, S& {# }$ F# W, w# Y
+ j% l; k7 x" u7 n- `# j+ m! F: e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-9-21 09:02 , Processed in 0.141357 second(s), 22 queries .

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