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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
9 Z, F0 y% c. u$ u8 a2 g6 G' \. @
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) ! M/ G+ \2 B6 w7 G
下载WEB消息推送框架" }* ~4 [4 ?2 h8 H: V4 ^& I

* D" U5 E: |1 x4 D- e+ l, O, w0 S   下载19472次3 V' o( ~2 U: ]' G, R
$ z- Y- N' s) ^. K
PHPSocket.IO开发手册1 L8 N) b& q0 e: C/ I
' R: N' L* ?; B* s4 s4 R* W
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content$ B. u) d2 n( q
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

/ n2 m% f) p$ z5 j" h
效果2:) n" d' _3 x; _

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

8 e' d& W9 o: |6 E1 Q- P' I
$ G6 @0 m1 K8 }( E( O0 m3 b" k
安装启动

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


! e3 L! z4 M1 P' I, }2 X


/ _* y% y2 ^, ^( E0 z. G
9 h' v- G4 z" t) J前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    $ D6 {% R, H4 T; w9 n
  2. <script>
    9 i% D: ~% p( T  ^5 A8 y
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    # `$ F) h# B5 f9 R6 I
  4.     var socket = io('http://workerman.net:2120');
    * F% v: Q6 D/ f* s$ @" q4 W
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    % [! Z6 F7 X, i* ^1 U4 i
  6.     uid = 123;" i8 Y3 I/ E; \4 N# ^
  7.     // socket连接后以uid登录
    ) X( b7 g# y8 F, S
  8.     socket.on('connect', function(){
    ' o' g8 m' V; F  u9 q8 T
  9.             socket.emit('login', uid);, \9 z; x9 A. Q& D- a
  10.     });; w0 r+ B# Z5 V- U) ?% ]0 c% K" `
  11.     // 后端推送来消息时
    * f, ~( b3 t) W+ U$ M. V. _4 N
  12.     socket.on('new_msg', function(msg){
    & y0 {9 W  |% Q. o$ [" B
  13.         console.log("收到消息:"+msg);
    5 d0 I# }$ O7 {  |
  14.     });4 v5 V" B0 g- T$ o9 r1 D
  15.     // 后端推送来在线数据时' T! H1 j$ B: J6 }7 p
  16.     socket.on('update_online_count', function(online_stat){
    . c* j+ X4 h% l6 W: D( u1 h- v
  17.         console.log(online_stat);
    7 z9 Q' Q! P( }. F5 s
  18.     });
    8 }! i( q7 Z9 t& n, t, V
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    1 S4 ]: q  }# q& x; Y: K
  2. // 指明给谁推送,为空表示向所有在线用户推送
    8 J. i8 W# L0 Z7 Q# A6 U  ^/ O5 l
  3. $to_uid = "";
    - E- {- |; X, h! Z& y% s
  4. // 推送的url地址,使用自己的服务器地址! y$ Z8 F6 `. z: q" E
  5. $push_api_url = "http://workerman.net:2121/";
    ' d3 Z: f* c- p, _
  6. $post_data = array(0 `9 D5 h; k5 {# r3 K
  7.    "type" => "publish",) M4 {% @8 Y0 T
  8.    "content" => "这个是推送的测试数据",) Z8 A6 s5 ]4 u2 O/ r0 ]  k6 F& X
  9.    "to" => $to_uid,
    : E$ S5 O3 }: L+ s8 z5 N3 W( D  L5 k
  10. );$ \) e* K; |" q1 o. ?2 L  d) B& z9 T7 A
  11. $ch = curl_init ();, O% K+ K& G0 D- f
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    0 N! m* Z& W$ l- Y# Z
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    ; I2 f, |+ @, e3 _2 x
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    - C: W" @+ C" M5 Q1 x( y
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    5 G) ~$ ~7 B  Y) N; a* g
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );* R6 g5 V& E( Y: I. H9 J
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    / p# `) F7 w! c: H  H5 c1 P* p
  18. $return = curl_exec ( $ch );/ `- n+ j* q, q( Q+ A% m- U% b
  19. curl_close ( $ch );
    . W$ R: D/ j% O$ [& a* z1 I
  20. var_export($return);
复制代码
9 u% G# `/ M- r7 C- ~# w1 `" v

, i5 Z% X% [0 |9 O* f' a6 y  A8 N! r7 ?- Q& [7 j1 N

* s1 a5 }# X+ V. J& w  ^
& V1 u6 b0 ^+ Y! B5 a4 V2 F; n( r
本文摘自 https://www.workerman.net/web-sender& o" Q+ ^: r& F2 P4 L+ c

+ [6 y9 E. R4 X$ k- w) H* e! S5 A! W6 ]6 b
# ?5 w  i4 o* H! n5 G9 g: o2 u

$ ^. x4 X. v5 A; [3 l/ ~  V
# ]; I/ [# f( M" {1 y! v  K, x+ `% W  ]
# @7 _) M3 T2 |3 k. ]* A: I, ?

0 H. A( `6 W, X+ {( t: t; S" b7 g1 W$ \' G" N7 y5 L) j! a

* E( Z7 ~3 ]8 d# P; c
6 K' w  i; P2 t, `/ B) j' I
0 g5 v3 h! ^) k/ e
0 w, X/ i# C$ I" J* f6 Q2 }. b1 Y! }8 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-7-20 00:33 , Processed in 0.060918 second(s), 23 queries .

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