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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:5 ?6 r" a5 f$ i- Z5 a
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    9 |, ]. i0 o) ^/ L' d; d: O, m7 a+ R3 O
下载WEB消息推送框架% Q( t- N% T5 t
6 y0 D; c& S" g
   下载19472次3 E: U: ]! T1 G2 Q( v" J
. V) n( }3 D. f) {8 o; d0 _  O
PHPSocket.IO开发手册+ |# w1 L& B4 X; f
$ ^3 _! b0 q, a' o/ W; s4 M$ Q* ?
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content/ C- @1 g: l$ z9 z5 [9 V
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

5 x4 G7 z+ \& v) W* t. t
效果2:. @$ ^; H. J+ P8 p

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


3 y3 R8 ^% H7 r  u0 J- R) V% E! R
安装启动

首先:参考手册检查/安装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 E3 o' ^: Y9 C2 Y5 r


* x0 m6 i# M% _6 Q# Q# F0 c# o! O, r; p; y9 q+ E: G
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    3 s) W8 f1 _# G
  2. <script>
    ' |3 T3 q* q( f0 q; _. u1 I
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    1 x! i" U: d- z9 d
  4.     var socket = io('http://workerman.net:2120');
    , n1 V) F1 Z! g. c
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    9 k; _% X2 x& ?
  6.     uid = 123;
    4 T/ E8 `9 F3 z( I2 Z
  7.     // socket连接后以uid登录: t% }* J" j" Y1 S3 H7 c& B
  8.     socket.on('connect', function(){- J# J  F! s4 m" p/ `2 t+ o
  9.             socket.emit('login', uid);
    * w& d% a  z: V* s+ P* t9 A! Z  C
  10.     });
    / k! x. ~. `, Y* s  c
  11.     // 后端推送来消息时
    8 f6 E5 t! S; F
  12.     socket.on('new_msg', function(msg){
    . a# W* K" |4 Q0 o$ g5 H/ A# @
  13.         console.log("收到消息:"+msg);
    - i" }6 m0 U) _' \# k- Z
  14.     });
    4 u- U3 n$ Y# }9 Z, W
  15.     // 后端推送来在线数据时
    % V% ]4 j( \# v$ G8 f. C# ?" u. O
  16.     socket.on('update_online_count', function(online_stat){
    # d5 }5 m4 N3 ~# V8 c
  17.         console.log(online_stat);
    5 R3 s+ a: Z) o, b" o, P2 ^. q
  18.     });
    ( D! d+ i6 k. C: }* [
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    9 E9 O- t3 ?$ w- n# V
  2. // 指明给谁推送,为空表示向所有在线用户推送
    6 E( R5 A! ]2 R2 M" w
  3. $to_uid = "";2 I0 |: s" W5 U& Z% M9 y# j$ d
  4. // 推送的url地址,使用自己的服务器地址; u+ _, {. N2 a/ p5 F
  5. $push_api_url = "http://workerman.net:2121/";0 `5 h0 N$ T  \. N" s5 N. T' [
  6. $post_data = array(3 B8 W3 \7 w$ v
  7.    "type" => "publish",; U6 m8 b4 W- J( A$ U  K5 Y, l, P
  8.    "content" => "这个是推送的测试数据",
    3 b' J. k4 ^9 Z% B# A
  9.    "to" => $to_uid, - i9 s( d( g: J
  10. );
    * f* j% W) K; ?
  11. $ch = curl_init ();7 `. s+ p9 K$ D0 J: d
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );+ R6 ?. [, f: ^) b4 E
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );) W" k% x' C7 c7 O+ M
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );( y. }, ?) g$ [' ~5 {# E0 v1 S
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    , @% g. d3 M% I7 k
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );3 b/ R/ N- B1 ~* [, r! o
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));/ d  P% B2 r1 E9 y% ?
  18. $return = curl_exec ( $ch );
    : G& Q. X( z4 B/ G+ E- @+ T
  19. curl_close ( $ch );! E6 `6 j9 @5 Q4 W
  20. var_export($return);
复制代码
3 ^+ t3 F" \' r+ K" V: P9 D0 R
1 e. }; U5 K$ X$ t! g( U! S
+ R; P  b$ D4 h- Q0 {. E! B& [! m
$ G7 W5 T: T! C* G

! `7 m$ ~: ~7 C% z* G7 h1 c本文摘自 https://www.workerman.net/web-sender
& ^, D! i8 _" n
) R) d- S, F7 l+ e* |$ J1 V: L4 }0 O

  _9 S2 O% Q0 f1 M4 b' ?7 B, ~, }3 q# k3 t) k) ?
/ G: ^7 n+ t( g3 b6 d9 A* D& v
% r& \" ~+ e- {( a5 ^

( S8 v- U: F2 V0 l3 h6 r% d3 o

; X+ e, r; l  W6 \6 i  P# \1 Z8 E1 m5 S0 u8 p

9 q7 b( D! F: w3 L
) @/ B. w" W: h% h/ Z. K( {5 W+ k
' g! f  [0 L3 {+ z$ u

+ y! z# ]* N; N. Y- J0 f& D) ~2 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 05:20 , Processed in 0.123717 second(s), 22 queries .

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