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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:. O. [4 E# A7 a! n3 ]% M8 X5 r
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    2 Q$ f3 |7 l+ f7 w% b# b8 {4 M
下载WEB消息推送框架1 w$ ^* u, u5 y/ U3 R
; N% W; B" k2 j1 F4 P
   下载19472次
2 ~0 h, V" D! B
  [( B+ ]2 Q3 m& o8 e, Z
PHPSocket.IO开发手册
- S! i7 i& n4 M7 n
, S% s, S) k( O' J
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
4 o  o5 n5 t" s, ?2 l其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

( R5 g* g1 m+ s/ [7 v
效果2:. C! N; X: u: [" o) ^7 k: `' E1 p3 I

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

/ J$ m- ?2 I" F* O" v4 e6 @

! p9 U( L7 }; d! w/ y安装启动

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

) e: B0 a. C! W/ F5 L

# L, g0 x% v7 A- r  p+ ~, h

. b: p8 @3 C5 Q) u$ I前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    + X. J9 j; C) f5 A7 @6 r5 B
  2. <script>
    - o0 C' R. N2 Q: z# l
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip6 k  b! C6 i2 K  b2 F
  4.     var socket = io('http://workerman.net:2120');8 i) H6 C0 s7 E- U
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数0 G  k/ f6 F$ z- t- E" G
  6.     uid = 123;" l/ |- d2 t' c$ ^4 r
  7.     // socket连接后以uid登录
    : L: K9 Y4 I7 ~. O) g
  8.     socket.on('connect', function(){, w8 B0 e- Y5 I0 T6 u+ w5 {+ e
  9.             socket.emit('login', uid);
    ! z" V" B" W: ~' s4 N( O
  10.     });
    ! w# K- Y7 }' P
  11.     // 后端推送来消息时
    ! Q8 i' S0 U" G
  12.     socket.on('new_msg', function(msg){! n3 G% J- T: q' s/ k
  13.         console.log("收到消息:"+msg);5 n( v, K$ S* w/ P$ t- b4 @+ l5 d+ w
  14.     });' a  l  t) o0 p) l
  15.     // 后端推送来在线数据时& K4 F/ u1 C2 H( q+ Q
  16.     socket.on('update_online_count', function(online_stat){
    7 D! h9 Q+ n8 @. [6 ~7 W
  17.         console.log(online_stat);
    8 {& y8 J9 P* x1 C/ b5 t) i
  18.     });
    + H5 L8 ?" m( J) s! P" U
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    ; F5 u. q& K1 f9 c, u. A) q
  2. // 指明给谁推送,为空表示向所有在线用户推送0 ~' `0 H. p0 R6 v% e" V$ m* x4 X; |
  3. $to_uid = "";
    ; k! |/ R0 g( n7 K0 w
  4. // 推送的url地址,使用自己的服务器地址5 N8 O  z% C0 x0 M5 {3 Y9 G
  5. $push_api_url = "http://workerman.net:2121/";
    ( M$ U5 B6 V, W  D' }+ ]. J
  6. $post_data = array(
    6 {. y  Q& t/ G" P, a4 R
  7.    "type" => "publish",/ r, t& U; X* B/ L( i
  8.    "content" => "这个是推送的测试数据",
    0 a: h* x9 A' N8 Z/ g
  9.    "to" => $to_uid,
    . U! a- _. |+ `  X1 b' K
  10. );
    . T  [; }% Z( ~4 F+ F3 s' D
  11. $ch = curl_init ();
    0 t% E! N# k; V* P1 h2 Q: g$ _
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    ; V- g( A2 _* K0 h3 M
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );1 O# G& z; s* K$ Q; _
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );4 [5 n- K, P0 [/ w2 V5 @) H& M
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );& U# U, U. q. u) _, Z9 {
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    0 w% s  n: K0 T; x/ `  f0 T( |
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    * D, c$ j9 C4 V' }  O
  18. $return = curl_exec ( $ch );
    2 h. {( @4 V0 R3 q+ [/ W. C
  19. curl_close ( $ch );
    ! ^; ?( e# Q% E5 b. y/ e
  20. var_export($return);
复制代码

9 B/ y) k& f* U" p8 S" u1 Q, x- ]# F. y5 R

4 t  @# D8 X, V7 F8 _% _
0 n; C: k8 F% d% l4 d; C6 g1 s) ~& ]2 a
% M$ q7 C& T5 n+ q
本文摘自 https://www.workerman.net/web-sender
0 f) h2 v) d$ D  x$ [; I
9 d7 h! W( }- t9 g) a! w6 F% c! g2 V
% l% ?, M, ~  V
' Q$ `; _6 v9 {3 ^  Q3 T, Z

& Z8 _5 G& N! t4 J* h5 ~- g+ z+ p% o/ k' ^# T; Y. }$ C5 c

8 y! Q. {; a4 O$ o9 v# v! j
0 o3 z7 H( J/ _' O

2 G9 S' \1 r- P- D. ]. ?0 M

( x7 [3 p' s  y9 ^6 ^! r
3 [7 g" a- G0 w" V' @
( z" j1 s* N3 |3 `) l+ \* r

4 U. h% M" p, R$ o5 I4 h7 n( N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 16:16 , Processed in 0.055025 second(s), 24 queries .

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