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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:6 J* Q& h0 R8 \! Q
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 0 J* t; k" @  T
下载WEB消息推送框架5 n( z; E, m2 b
' ~2 M0 m' P' O0 R
   下载19472次- G0 {) ?  n& J: R( O
' d1 _  q2 U& t
PHPSocket.IO开发手册
8 _; Z9 l, a4 r6 @# ~8 A
7 Q: y" B4 @  M- w
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
" O( B, ^1 ?" r: A  L其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

0 w2 y0 E  S* M: r! L* _) x$ c! G: z
效果2:
8 r6 ]7 G. I, Q' G

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

- _* U& z2 Q+ M& E4 Z* P2 N$ f2 J2 \

& S- Q$ E5 Z4 @安装启动

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


* x' G9 p4 G3 J


! K) S9 Y( y1 x. l/ K
" S" i' K5 @; f. f1 _前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    % v9 U. Z# m$ N7 o7 y
  2. <script>
    ) x6 ]+ J  s, I0 n. j: [8 E
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip( |8 ^, c3 h3 c3 E
  4.     var socket = io('http://workerman.net:2120');0 _1 ?" H4 v0 v; {2 y# F7 }
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    9 x4 K/ Q/ f$ s# R  k  Y+ U
  6.     uid = 123;. p' Y8 y: }. }4 C! g7 j3 L
  7.     // socket连接后以uid登录
    * [8 b( ]5 r  {8 j; u
  8.     socket.on('connect', function(){
    , ^, F, h  X3 ]7 T
  9.             socket.emit('login', uid);1 `( P3 m+ [6 Q* Y/ _
  10.     });
    # L# o. ?2 K( D% }; X, n
  11.     // 后端推送来消息时* E' F- d3 x8 ^8 L; @
  12.     socket.on('new_msg', function(msg){) a, H9 T$ E7 w0 Q
  13.         console.log("收到消息:"+msg);
    $ W! r" C  Y8 h; s* b
  14.     });
    . j0 C! g1 }! J" X, ^( x) \! M2 Q& F  R
  15.     // 后端推送来在线数据时9 N2 B8 R4 N( z  _- h0 i9 m7 \; A
  16.     socket.on('update_online_count', function(online_stat){
    5 j+ B1 @- m; d2 E
  17.         console.log(online_stat);
    * ?* s/ F2 D& A4 c% h/ L" N
  18.     });
    7 f" ^, [$ [7 q# @2 y4 q
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    ; i1 e( S2 `) A  n' B7 h
  2. // 指明给谁推送,为空表示向所有在线用户推送' A8 ~7 {( I9 b4 h. v! i
  3. $to_uid = "";
    " ~& M+ c; K! B5 ?8 z( ^
  4. // 推送的url地址,使用自己的服务器地址
    4 t: x* K* }, J8 b4 H" S. f
  5. $push_api_url = "http://workerman.net:2121/";0 b5 S) [7 j" p# S
  6. $post_data = array(/ R4 D8 V  y5 `5 L' _/ T
  7.    "type" => "publish",
    ( N9 i! W8 ^% E  k# o( `
  8.    "content" => "这个是推送的测试数据",1 i& W: {; I% x( V0 z
  9.    "to" => $to_uid,
    ' w! q* i6 I6 F  n! F% V
  10. );
    ) q! |8 a+ g, A$ j, k3 @" i& r
  11. $ch = curl_init ();
    / R8 ]' k3 N% T( W. M
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );9 ?" e# a2 h* E& d
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );0 c% \! T( Y7 O6 k, f3 w' @% w9 T% {
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );/ H* j% f+ H* @/ l6 h
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    % ^6 b# P! Q2 k2 ?9 g7 M
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );" O0 C# w$ E+ H( b) f0 p  b1 J
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));! m) i% [6 b5 W+ O" a) q5 G
  18. $return = curl_exec ( $ch );9 Y" [8 j7 l. X/ a- V
  19. curl_close ( $ch );
    * z* O8 P- g1 g& V+ O
  20. var_export($return);
复制代码

+ Z4 Y: F0 Q' Z8 Y7 m$ Q7 M" S+ |
# J# T3 t8 ~  L0 ]: h( a) m) ~) _
( j$ i3 q. n& C5 d9 a/ W0 e' b# x2 n& D, v% _) E8 n3 c% _

/ U' {" n; u9 K& L; j" Y) K+ B本文摘自 https://www.workerman.net/web-sender
3 }8 _' ]4 m/ q
! z& |1 O  c! e8 j, k* Q  s7 j  O1 A2 [8 w9 U

9 K" E$ O, ?) Q: D) t* e* d# _% s/ O! H2 t3 c0 Y% ]" Y

6 W: d" `3 R5 d/ o3 ?" a: X6 n' y. F- z' m
) r( Z; E3 H8 ~
0 R( S  G+ p4 p! ]- e; z

# |% M& l+ b$ Q$ k7 b* q2 }- X$ n

# B, N  p9 d/ v/ v0 ]5 U8 G# B  K" o1 i/ o
- G5 n* ]5 M7 `+ v

' k. X1 S/ F9 q# W- G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:59 , Processed in 0.053871 second(s), 22 queries .

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