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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
$ J2 ?9 M; j" O+ \% Y2 C
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    ) x% ~# N3 {# _/ G$ _3 }. M
下载WEB消息推送框架4 E% h  H& \: S. R0 x& o1 c& ]: x

3 ]/ {0 b% u, f! D% g' k   下载19472次2 s& }4 N& ^' s% f- k' v

% f+ x! a/ w3 a3 \/ \* d, UPHPSocket.IO开发手册
/ p6 n% l" B0 r- Y+ I% M" Q
. f# s* [7 r) L4 u- h* ]
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content2 u- m4 @) `- {- d( j
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

" U3 X3 Q2 K5 X/ K9 _& B4 z5 N3 P
效果2:8 F; F- n/ @% E. A9 j8 b4 {

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

3 N6 R0 V, q; y# _, ?# f/ U

5 |/ D/ e/ Q7 j: r1 D安装启动

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


& x9 u, `% n7 a& y

& h; n* p0 I' h8 Z3 K* ?
' d4 ~  K% d. t' W  W! _/ {
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>6 C. `1 J4 A, @4 X7 {4 q6 U
  2. <script>
    ; P! w' r2 D! G( a1 ?& `" a
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    ; e+ t6 J1 g6 c/ H* n! I! ^1 z% }5 b
  4.     var socket = io('http://workerman.net:2120');
    2 y% R1 q( x& L* ]! @+ _3 T
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数, h0 N3 S' n6 @+ H" e
  6.     uid = 123;
    # ?9 ~- m+ y% S# s* I
  7.     // socket连接后以uid登录- h( ^  O( P8 ?$ z
  8.     socket.on('connect', function(){
    : B( C! F9 g% w
  9.             socket.emit('login', uid);
    # H% O$ B! R) A, R: \
  10.     });6 a3 f0 F8 H$ ?$ B- M! C
  11.     // 后端推送来消息时
    ( }6 {& y! _5 ?3 O* r3 i* o# Q
  12.     socket.on('new_msg', function(msg){
    ) Y4 k( `2 i! l1 R
  13.         console.log("收到消息:"+msg);
    . N% D3 ^5 ^' `: a+ l! U8 d6 S; V
  14.     });4 Z" l) H2 [7 N% [; c7 w( r
  15.     // 后端推送来在线数据时
    % b2 B3 }; ^% p5 e0 {
  16.     socket.on('update_online_count', function(online_stat){
    7 a# d) x' c3 U$ x" d! e; n. ]
  17.         console.log(online_stat);
    ( g- a, }! Y2 n
  18.     });7 N$ n3 \1 Q7 ]  P$ s7 e# P
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    0 C$ c# o5 ^2 z7 _) u
  2. // 指明给谁推送,为空表示向所有在线用户推送9 v: I0 {$ |* s5 R; P4 M. m5 y
  3. $to_uid = "";
    " M; k& a6 ?5 ~) {0 M
  4. // 推送的url地址,使用自己的服务器地址8 E5 E8 k! _  X! @- o3 h& d
  5. $push_api_url = "http://workerman.net:2121/";
    0 }! s, N0 K6 X+ s/ Z. H0 N
  6. $post_data = array(3 C, F* u$ p" w8 f
  7.    "type" => "publish",0 A- Q# [7 p) H1 N. i
  8.    "content" => "这个是推送的测试数据",$ c) |. x- a) ^4 ^6 m( ~, i
  9.    "to" => $to_uid, : S* {- g. g+ n# y; v: F
  10. );
    # S8 G: b0 M4 ^5 ]& O( a; S; i
  11. $ch = curl_init ();* X9 b+ n. k9 g1 a
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );* F$ W/ _" X* p( V, C' u
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );& T: u" O2 {) f  s7 S
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );$ _, p$ \" W, |, ?: x) J$ ^9 v* I
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );' N/ G  d; P9 a8 k8 l9 |. m; i
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    : n! q, b! z, t, r( y3 L; ?1 {9 z
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    2 P$ e- m  Z3 S" b; Q
  18. $return = curl_exec ( $ch );
    % l4 u! K# D# D9 ~1 N; c& E
  19. curl_close ( $ch );
    8 ?4 ^% @( f6 i. w2 f8 c1 O  e
  20. var_export($return);
复制代码

7 p5 @2 ~- k0 g9 a. W; e) c$ Z# ~' v* ^- }% Z  Z! L7 M' X- {
3 m; H6 _9 U/ N! r) H
& Q" i4 v; x, Y
9 j! |. l- [4 P1 K
本文摘自 https://www.workerman.net/web-sender
" O0 C5 o& \6 b, U
. c& V; b+ R2 ]& F" n( u2 T  x8 b& X
! _0 ^. p7 x1 X9 B0 u( H: m& ?3 M* T. }0 s7 o* t  S$ {
5 e/ X0 Y# Y$ e0 g) p

6 O$ [+ P$ s" i+ i2 V% I
9 \0 S3 v5 m: o. m( E- N7 p

! |9 K) H7 x6 s9 e' i
4 _' e% u) T' B" z+ Z( H* d
4 g( H8 X4 x- O- p) ]

8 o* _; _2 w: I/ I5 V/ t; P) R

% @3 b" f/ T1 T/ \3 }4 c9 j- S
2 Z( ]6 Q: g: e8 Y6 s  u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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