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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
$ h  m: }( `+ ]
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    8 V% ~" |) g% _# b7 \# _! i
下载WEB消息推送框架6 {7 m) Q2 U/ p4 p  x

: y+ @' z# |8 \: Q: e6 v$ T   下载19472次9 w/ J) e' u+ T/ B

) h& B$ K" k7 A6 f! E1 |, F# ^PHPSocket.IO开发手册* f( Y( k( C# W. d' f& a
# |. \& x' e' o# o) I
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content- I. k) l) U$ e4 W: T3 X+ H# b
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


4 c) j$ n' h5 e1 O. `2 S* s效果2:
4 |# w8 G7 F- A. w( s$ g: W

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

9 |, @5 E; x3 x8 q( Z$ g3 h

: e9 B) v7 l% R) P6 ]/ f( \安装启动

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


3 n, O3 V# y& R5 h; l; G

  j# H4 m# @5 a0 p9 ^2 }

0 ~, d8 c3 f# A2 B前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>" E9 |) o+ J6 V9 @' J8 @7 p3 }' O
  2. <script>- U% \4 ^3 G# Z3 P  h
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip# G( ^1 K7 R; C* Q+ Y, d* _) C
  4.     var socket = io('http://workerman.net:2120');
    0 x# u% }; n  s0 r/ j( l9 s
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数/ o( I% q+ Z9 `4 ~
  6.     uid = 123;' Y3 \0 E3 y3 ^  A
  7.     // socket连接后以uid登录
    # }) S& L2 v3 R6 n
  8.     socket.on('connect', function(){
    ( O1 a5 n1 Z  q1 I" p7 ~
  9.             socket.emit('login', uid);$ F4 S) k. P9 e. E6 V3 A3 O
  10.     });
    - v& W% W0 ^8 n$ Z8 W9 g: M
  11.     // 后端推送来消息时
    9 W6 ?- ]1 i) I' h0 E: @( d
  12.     socket.on('new_msg', function(msg){
      A: l  U5 ~. |: ]
  13.         console.log("收到消息:"+msg);
    " c* Y2 t6 c6 I, s' k
  14.     });
    6 y% \% y+ x! D0 \. L
  15.     // 后端推送来在线数据时
    ! |: Y' y9 G+ Y+ r
  16.     socket.on('update_online_count', function(online_stat){5 [; G8 u% x( w5 l% w' D
  17.         console.log(online_stat);" ]2 I5 z1 _2 K; X
  18.     });# z: q% ]: v4 w; b4 l# M
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    / [$ j6 d9 M) ?5 U5 p
  2. // 指明给谁推送,为空表示向所有在线用户推送
    ! r. v% U4 w. _
  3. $to_uid = "";$ g3 h, _) ~) c
  4. // 推送的url地址,使用自己的服务器地址
    ; g6 H$ ]6 l3 I( ^- k: D: W
  5. $push_api_url = "http://workerman.net:2121/";
    8 d$ J/ `% f) W  o3 r2 E
  6. $post_data = array(
    ( M9 P+ `5 V0 ]5 ?7 T+ h
  7.    "type" => "publish",
      [) P4 ?6 I3 Z3 q: f
  8.    "content" => "这个是推送的测试数据",3 A. M6 ?" d" V2 P( k" v
  9.    "to" => $to_uid, , F& Y7 K) |% L( {) J, l
  10. );
    : _; I) v( a7 h* s+ J3 P
  11. $ch = curl_init ();
    " h$ g' b* ^5 f* M+ O; O7 g
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );8 c0 K- r2 y! P
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    : a- Q$ \" n, a' g6 I; H$ i
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );/ f5 d( o4 E5 i, x$ }
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    3 F  k9 t% k* A" m
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    $ ?; W5 ]. J" W
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    1 W7 H, R: ^0 f
  18. $return = curl_exec ( $ch );
    + E+ }7 K$ G8 w  q5 k/ k
  19. curl_close ( $ch );3 P* T6 H( f1 j$ H( c3 ~8 @3 Z
  20. var_export($return);
复制代码
. T0 r- `4 \9 _  k3 Q( u5 S  h! n

. S' F# ]6 w& x5 k4 ^# w% w
8 c2 o2 m* w/ \! J7 M# `  n4 T4 h
( u: T' C3 a+ B6 t, J2 U
本文摘自 https://www.workerman.net/web-sender
; {; B" m5 K, R- c- \$ q" p# N* f+ H2 ^5 a7 j  k0 J3 R5 R/ ?
7 H. I6 l. v5 Z3 I9 J
1 _# `  [& A- V+ o3 F! G$ `) v: s
1 ^5 o* d: Y8 Q% k( f
" R1 w$ G3 `( a! y! K
6 V4 G( f9 M2 X8 Z

2 r; g! l* [! O
. A+ _( K2 L$ F  C- e5 }

& W: U" G# u5 C+ A3 B) r
2 E5 K) V) T5 V8 X% @+ h3 L
, t9 w% I2 j  V" c5 [" i, d# S% J

  n* B9 A" E" k( J( Y
: G& R% I1 p/ B8 m7 W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:18 , Processed in 0.062578 second(s), 23 queries .

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