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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:, X  q/ C4 o  z1 ^. d: o& J
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    + `$ G( q" l  X) R* H* L
下载WEB消息推送框架+ C. C0 J( `2 \1 I! z) |
, `# B5 T5 f  o8 ?1 z
   下载19472次
( _9 x/ f) F) L1 Z$ o9 z) L
) L& \' \- x$ x1 X2 L7 x
PHPSocket.IO开发手册
* R" U% B6 a+ F5 ~  ~

4 j$ f0 E( w$ \% I. p: Y
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
/ t8 A3 z( q, @. ]4 T$ F' |其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


6 c0 S5 p9 G1 w1 _9 {' t8 o效果2:4 d- Y! M) ^; v+ e8 r

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


0 c1 }! K2 ~" K, U7 y# L
* ~7 F, l5 d/ R安装启动

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


% ?7 D7 T* ^2 K+ A' O( C, K


" A4 H! [( e# g5 \$ T
& z7 X* x9 V1 u( J8 k9 x前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>! E9 N1 K6 O  T8 A4 T$ i
  2. <script>
    $ [; ?- w& j3 n% [
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    3 e! s- y/ l  x% N/ R- ?( Q5 g( f
  4.     var socket = io('http://workerman.net:2120');5 _) ~; W) I3 ~5 P& r
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数* A& P3 }# z! a/ l6 j; t
  6.     uid = 123;
    ' M  s  [! J2 i. H; q$ [* M$ P
  7.     // socket连接后以uid登录
    - N' Q4 O- E  z6 z8 h
  8.     socket.on('connect', function(){) h, y8 `. P$ x) J# s
  9.             socket.emit('login', uid);
    - j0 x& E: P# X; x' X" _2 E
  10.     });9 W! i& p# ^6 R4 c' {- L7 t
  11.     // 后端推送来消息时' ?/ q' Z4 j, M, G0 Z. k9 o/ R
  12.     socket.on('new_msg', function(msg){+ {( V6 w% ^5 ~1 k) \; k' y
  13.         console.log("收到消息:"+msg);2 M3 _( j  x* {: _8 g9 n' g" \
  14.     });, V% E+ g9 R& A: p0 o
  15.     // 后端推送来在线数据时; M& ?+ W, X5 f. t6 b$ W
  16.     socket.on('update_online_count', function(online_stat){
    , X( ^& L2 n8 E9 [6 `4 w# H3 Y
  17.         console.log(online_stat);
    1 _' ^; }* M: ?8 W0 R2 S7 l
  18.     });
    + ?5 C9 k6 @+ @, \8 S2 U5 u' [
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    9 w1 r& s( L: H  r
  2. // 指明给谁推送,为空表示向所有在线用户推送
    ) I9 ~9 N1 Q4 s3 y+ I
  3. $to_uid = "";
    1 q0 N# N$ \. b# a, h7 G) Y2 P
  4. // 推送的url地址,使用自己的服务器地址
    7 z& T. c! n: b+ O/ e7 Q3 f
  5. $push_api_url = "http://workerman.net:2121/";# M! W: [+ L& T2 L4 W2 I5 @( ?1 P
  6. $post_data = array(
    % V( p' P# v; }8 U
  7.    "type" => "publish",- N  G% S1 W' d; p: n; r
  8.    "content" => "这个是推送的测试数据",$ C6 o$ P+ b6 D
  9.    "to" => $to_uid, / {0 ~2 |6 n1 P
  10. );! h( H* a# f" k. Y& u; |8 R7 T
  11. $ch = curl_init ();% _* |2 M5 t/ |' K% I: n
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );# w! M+ k, k5 z+ |# X
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );  j" F8 O( g, [. i
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );& U/ w! s6 a" {6 J5 H- l+ }% l5 u
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );* K+ G: W, S6 b  ?- h5 M) q4 S
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    ; m) {- [: s# y, j3 f
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    ( q3 o8 U5 M1 R8 o+ k/ L" [
  18. $return = curl_exec ( $ch );
    % l. V7 K3 _7 G" I# }# A
  19. curl_close ( $ch );
    : x7 f9 ^3 \8 U/ L
  20. var_export($return);
复制代码

( H7 Z9 M; l1 H$ b0 x0 l! c, T; m0 X/ M- l

' J* H2 p: r7 [+ Q  J5 [
" E' @3 N2 U! v: C

% h, B2 x+ x  [$ t6 L0 I本文摘自 https://www.workerman.net/web-sender) ]# ~9 T- K* e) e4 P; h
/ x0 t9 b4 _- Y  X' B
$ f; [* \9 C& y4 Q) h9 {/ B
% s) b. ^+ `% S% {) ]
! ~6 E  @/ V; t3 a+ l, C8 @
% P0 `4 n6 ]- a4 ?

; c+ Q6 i: u) i. x
" G/ ]. d# L* \7 B

8 j5 s; i- P/ u1 l6 O0 _4 o" |$ _/ p7 T! J1 L: {- C
* y* ^' v6 L" E8 {- d% x
) Q' B' h3 h* p5 F: s2 \
6 {# `3 i% Q5 A5 v! Y( b$ v
' S* H1 I) g  r; o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:02 , Processed in 0.058000 second(s), 23 queries .

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