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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
$ c$ ]% ?  h, h
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) * {7 \4 [: W$ V7 H0 T
下载WEB消息推送框架
. q. _9 U4 S) ~; ?4 M

" C) I1 `% C1 {3 G$ m' ^& D   下载19472次
$ v  i! M8 y. R8 s& P$ D; E
+ Z3 {# F! x5 S2 P6 y! {
PHPSocket.IO开发手册
: ^/ t6 O: p; e3 c# l

* ?: I) c! R& Y2 W7 ]
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
! D  H9 f( m! U9 j3 X其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


* C3 G; k" R4 y+ P/ F9 L1 a效果2:
, i6 T9 j, ]7 l' N, x' J

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


4 Y& X9 u) |+ y4 ?) u/ ~( I. ]
% l, y4 o1 O$ c* M1 F4 u安装启动

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

# o: U8 s- l; t7 m+ R

* v& g. O! ?$ @8 M2 r  @+ C
2 w1 \/ r) g- n6 |
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    9 O- [6 w' P, G4 T7 }9 \: U
  2. <script>
    * U; y; ?) }: n& a9 u' i  K
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip: A; W3 ~1 a* X& E; `2 b( Z
  4.     var socket = io('http://workerman.net:2120');! k7 T$ u$ s' N" _& {
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    & O2 K/ a/ O3 b8 D( _& x* c
  6.     uid = 123;% L5 u3 N7 J$ e* B. x1 p
  7.     // socket连接后以uid登录
    6 H/ `6 }( U- C( N/ N6 p2 ?: C- u
  8.     socket.on('connect', function(){) h/ M! @# o9 U1 Z# i
  9.             socket.emit('login', uid);1 ]  Z. W+ K* t: \& @
  10.     });8 G, z, V" o7 |: s4 o4 B
  11.     // 后端推送来消息时
    6 p1 x1 p; B+ ]% w) l
  12.     socket.on('new_msg', function(msg){8 a4 z: i( |; f- S
  13.         console.log("收到消息:"+msg);# l8 U. L( p* t; f7 ?# g0 v
  14.     });
    4 k8 w  k  H2 l7 x
  15.     // 后端推送来在线数据时! a+ W& [( L6 W* p2 Q% s9 }4 T
  16.     socket.on('update_online_count', function(online_stat){, a+ }7 Z/ w- _; i
  17.         console.log(online_stat);
    9 h' b3 }) C: \  }& j) u
  18.     });. ?8 \) m3 r% i* _$ r3 o0 t- @8 C
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    8 z( Y# [: a. ]# \4 }5 W0 w* |, u
  2. // 指明给谁推送,为空表示向所有在线用户推送2 K6 d3 n- g- W$ i
  3. $to_uid = "";3 b$ j6 r( u; J+ L; u; ]2 q$ b
  4. // 推送的url地址,使用自己的服务器地址
    3 f& H1 e6 L, [) B* W) C
  5. $push_api_url = "http://workerman.net:2121/";: e% ^  K$ ^# z8 j5 K2 z0 `
  6. $post_data = array(
    ' ]  c$ o( }0 F  S' h. p( [( V3 z  R1 m( E
  7.    "type" => "publish",
    ' n% D8 o9 S- Q2 f7 p
  8.    "content" => "这个是推送的测试数据",
    3 X+ o9 u* k  d5 B0 E% [
  9.    "to" => $to_uid,
    ! j2 S1 Y' `- `
  10. );
    7 \) O" I! O& ^3 ^
  11. $ch = curl_init ();
    " E" V4 p2 u: o: S
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    : C: ]' i0 t+ d6 `) Y2 L
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    3 n, H' U1 A: w: ^: u3 c9 b0 Y
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    ' |6 J$ `2 X. M, x1 P8 S( f
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    - C; T1 M% N- ~2 m
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    + e, H1 J4 s1 g" Q6 s! f
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    ; l5 i! x% {- l1 s6 J4 A
  18. $return = curl_exec ( $ch );' m% i2 j+ W/ p0 i+ q9 @
  19. curl_close ( $ch );7 o" I; n( [' V# a2 U
  20. var_export($return);
复制代码

& Y  j& ^) M) G8 o# H2 |% {6 I7 y- f  S: w- x" s* ~8 W/ g
: a: t. `1 L2 ^

$ H6 q" `4 Y( C9 p$ S6 s# h4 S
  q* O9 G4 r  v' l" `
本文摘自 https://www.workerman.net/web-sender( x$ j. ?4 n  |& S8 R, C9 L

5 ~$ w" [0 o% b- O, f- R9 e- U& x6 c1 \8 P7 B1 b

9 m) L1 w4 _) C4 y' e; D" x
9 ~$ Q6 X( R* O
% n" Y9 G3 c- l4 D, D$ U! y" |* [4 v0 T9 d0 h; r/ U

' K6 d$ S* Q, }5 O; C6 a

, G3 w6 O3 G; Q2 w6 O5 \% r! F4 B. e  l. C% D7 P/ S
" ~# Q' _) Q1 s, t9 s0 L

" F- [, Q; C+ @1 k/ Z
% U5 u3 q; f- T6 l8 T. w: w& R9 v" U

4 L7 D& J9 a+ a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 23:47 , Processed in 0.070376 second(s), 24 queries .

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