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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:$ S' p1 X0 K0 `* V
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 5 D: C- o; K9 h6 u( J
下载WEB消息推送框架
; @* U6 X6 s# w- X: |, `
5 D+ N0 b% j& U- U; v+ |8 j
   下载19472次
" p! v" l! i% y$ x# P) b

2 e: |$ P+ ]3 @" \- J) \PHPSocket.IO开发手册+ C1 _) S6 g8 {7 }
! P3 V9 `: c% k) v/ i" G) V
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
* o1 M8 U* I7 [$ R0 F其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

5 H6 S: e. S( r- r' Q
效果2:
5 D. \1 ^0 l& ?$ p9 b

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


6 P- Z' e) Q& ?" d
6 f, E( ~; l7 A4 Y/ V" K4 M: }0 m安装启动

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


/ G3 Y( x9 _% ^: O

+ S& N- z9 }4 Q! E

4 S1 e: b7 p' U8 O/ ^' v前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    7 _2 v2 b% N, H$ R
  2. <script>
    % y# w; K2 H  _! H# ]3 E
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip+ c1 h9 t* d6 V, _" [
  4.     var socket = io('http://workerman.net:2120');6 r6 @1 b# l" o" S6 x- e3 \1 k& p
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    : r: W; K$ z, S; d( ]" w
  6.     uid = 123;3 n; U4 U, t3 I! a
  7.     // socket连接后以uid登录. d% ^8 `) v" ^
  8.     socket.on('connect', function(){
    + U& A9 h+ h$ ]) }
  9.             socket.emit('login', uid);& s4 p9 C0 E( c7 g  r
  10.     });& D* E) m3 ?+ H1 X  k/ F
  11.     // 后端推送来消息时+ X9 M9 ?( D* B( m! V  J
  12.     socket.on('new_msg', function(msg){
    " v. \! ^& U! |% R8 F0 U$ a: C! E
  13.         console.log("收到消息:"+msg);
    $ H1 }' U; Q0 [7 z) c4 d/ C
  14.     });
    - C0 r# z. i+ d, P; S4 K. ?2 M! y- W
  15.     // 后端推送来在线数据时
    , g* r- _- \; q
  16.     socket.on('update_online_count', function(online_stat){) e$ T. o$ E1 y2 u+ X; h; j
  17.         console.log(online_stat);
    * ?2 ]- t- K# O& Z) n( t
  18.     });9 s- ]3 e( z$ C* i* F
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    ( K, j* ]$ n. _5 l! N8 ^4 L3 N4 s
  2. // 指明给谁推送,为空表示向所有在线用户推送0 c& V6 L( ?% G7 p) n
  3. $to_uid = "";
    2 h1 @1 a$ x8 O6 x3 \" Q+ m
  4. // 推送的url地址,使用自己的服务器地址
    4 B8 H& x1 x+ ]7 ^  z' T$ Z6 _
  5. $push_api_url = "http://workerman.net:2121/";
    7 i+ |6 A( f) A6 G  u6 F0 a9 O
  6. $post_data = array(
    - a0 s* e6 h; \' J
  7.    "type" => "publish",7 B' Z* T4 O3 @& T; E
  8.    "content" => "这个是推送的测试数据",
    2 e* B& i. D( @& v0 T
  9.    "to" => $to_uid,
    ' \- |2 k1 j1 Z0 x) w+ s& d
  10. );3 X2 J, c, w; x! O
  11. $ch = curl_init ();
    8 h/ d5 {, t* H: H# @
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    4 _& b$ ?5 ?9 l, A- |
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    1 A9 b" o9 H( B. Y& m9 s
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );9 A. C- ]: H0 ?/ o2 q
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );9 t9 A8 X. m6 g( a
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    , e# T$ g+ y4 X8 W4 J4 o
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    - a) R7 ?2 |" F4 X: y
  18. $return = curl_exec ( $ch );
    5 E( G: [' r6 j4 Z
  19. curl_close ( $ch );
    8 z8 L8 [6 ^; f- W# S0 P: z! B6 w
  20. var_export($return);
复制代码

) P. D/ U& H, p8 l' _  J! c* b7 I. J& p$ ?# K% Z2 i
0 x; ~# {& D# \& ]% {
' @/ E9 l' e$ \: x" S+ x
% D( b' A$ I) G% {3 v* }6 L; e
本文摘自 https://www.workerman.net/web-sender3 o* ?3 q3 q5 c' C

$ x  Q0 o' w+ k6 \) L2 r0 U* A3 \- H+ J$ s" F5 D/ L3 m
! S  o6 j; |% \9 [& v

; ]0 X$ O! W4 M6 I; H
4 |# F. F" [  ]$ ]) A7 R6 p: i/ C
$ {6 R/ {2 a. N0 h! _
% T8 k6 R+ @* Y# y! u

/ h* d$ n! X& H7 Z& ?' }
) p- Y7 S9 P. H3 A/ A9 m
4 R4 ]3 c2 J/ T  ?

+ o: x: M; J6 H% A3 `

( `6 ^. `7 y) S( v: H, {) g, y. Z" ^' o0 t4 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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