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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
+ c6 g+ @+ T: A1 ]; y* e6 j
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) * V- Z$ n' d2 o" ]
下载WEB消息推送框架
9 a+ l7 I3 v: c

2 a" Y7 _- A+ \   下载19472次
9 [# J5 g+ W% k9 J: g
2 L6 F5 |/ M5 V. A, p
PHPSocket.IO开发手册3 u- t4 r: Q) T$ L, S

* H5 w$ ^( m% h1 ]
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
  |8 e1 |5 l7 y0 X) R# H% k0 Q其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

2 c8 S# y( V, z1 @- _! p* n4 _2 t
效果2:* r  z! Z7 M6 @. u! U# F

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


9 H# m- s. s0 x1 k9 @" r0 r6 c% z' u8 u# \0 i) v
安装启动

首先:参考手册检查/安装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 W  \& }5 Q' X

, w) b- p$ P- ^' K1 ~( O$ Y% \
1 o) w$ ^; b: l3 ?  t' V  J
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    ) ?. ?" j! ^$ m+ q) f
  2. <script>
    5 X7 u% |; ~+ ^( A$ M6 i5 K$ l
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    ; {3 A/ M+ s0 G9 f% o4 h
  4.     var socket = io('http://workerman.net:2120');1 a  Y5 v, ~$ J6 |9 F" f
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    8 \- ~' F8 |4 s/ }. |/ }- b
  6.     uid = 123;0 I  _( J& I! V* n1 i1 Z: O, h
  7.     // socket连接后以uid登录+ ]1 ]! n5 W+ n( a. p5 P
  8.     socket.on('connect', function(){: j. G: Y. x. N: N6 r) w
  9.             socket.emit('login', uid);
    # Y; u' Y/ `9 M! R' I- {* A
  10.     });0 g4 N" ]( S: Y% I( X
  11.     // 后端推送来消息时+ o' o8 [; R* e. J4 }
  12.     socket.on('new_msg', function(msg){' V% Q& [) j8 Q, g& B
  13.         console.log("收到消息:"+msg);+ M/ G! x: |% U3 a7 t: I/ O4 E$ K
  14.     });2 c% ^1 }' f% z+ X  Y6 B2 L
  15.     // 后端推送来在线数据时( E" A( Q' y* ~3 X, T" o" m1 W
  16.     socket.on('update_online_count', function(online_stat){3 s% ^% H& o8 B) H5 G+ h) K
  17.         console.log(online_stat);# P" ~4 C, p% S: k) `7 `8 `
  18.     });
    1 Z- L% N( [9 a4 V2 j8 o
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php7 b- k/ d& }; O" v# F
  2. // 指明给谁推送,为空表示向所有在线用户推送+ g$ H+ t  D; t0 ^- |
  3. $to_uid = "";3 d8 g1 W' N+ ~# f
  4. // 推送的url地址,使用自己的服务器地址
    1 J$ |- f, @* {6 E2 C' ^6 `6 S
  5. $push_api_url = "http://workerman.net:2121/";
    % l9 x5 r" t+ M3 Z
  6. $post_data = array(; U' S6 I& ^; w7 m! F
  7.    "type" => "publish",9 [: }; L9 [  v# B  a1 b8 {
  8.    "content" => "这个是推送的测试数据",
    : F* j7 R7 i$ Q3 x8 x$ n, T( H- P! C
  9.    "to" => $to_uid,
    8 r. G$ v6 F0 F  T
  10. );
    ( F9 \0 x- D) B8 D! ]1 p
  11. $ch = curl_init ();0 C$ E" J/ }  Z$ J
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    " L2 a, s3 L9 F$ d
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );4 o% Z- ?' B& E7 _7 X$ D" D0 O& W
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );- j; \" s- ]: M0 w6 ]
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    7 I  Y: [# y: i3 g  |. j
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    & A; w$ N" x% ~+ m" D+ t
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    / C! M( ^! Z) o. p, M, e$ ]
  18. $return = curl_exec ( $ch );4 X1 E. j# E- M6 j2 J: T1 q
  19. curl_close ( $ch );6 e2 f* H, m. v4 V* |2 s
  20. var_export($return);
复制代码
5 e# B# L4 Y3 Z! W) J1 v2 H. d* x

8 T" y8 K+ S' T% c( z' x/ V( @7 _; l
& _* s6 \/ Y5 z5 W  i) d+ y% K, t9 G" M; s% F' L

' \6 Z% }: T: e. ]7 Z本文摘自 https://www.workerman.net/web-sender* I8 W. y, a2 I7 N( I

; B& f# A3 a' v) y" n6 ]
8 k" A. H8 O7 I  a: o7 c5 ?. X- d8 i2 [, |. L

  y1 O" {% q4 W+ |) |1 Z" X: r1 C5 B* |
3 r' A1 }( A0 e7 n- X

! h4 `! H+ l) T0 W1 ]% G
$ e3 Q2 a( h& A' N/ {9 T
! l6 i, ^3 Y+ B' Z9 b% F0 H

. f" L8 g9 W) g- `5 n% O
( t  A  O; I7 u$ n/ u0 O) |
: u. Z- [$ `* ], r
! m) b' K: q# x1 A& {9 F4 b# T. U1 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 06:50 , Processed in 0.110530 second(s), 22 queries .

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