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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:! v2 y! Q( T. W) @. k
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    5 M( S8 {; k* a
下载WEB消息推送框架
+ l8 E! ^9 r+ I
. Z" ]) M) [4 x9 k+ d( [4 f
   下载19472次+ L3 q6 w% H0 s7 W, a" i3 N) e
% ]2 r# P  C2 N) N+ A& c
PHPSocket.IO开发手册2 Z+ V; z- p' y. \; D/ z
4 J: s  u/ H) t" ?' {
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
% A+ Z  n$ L8 R. p' A  R" ]! }其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

/ L, y% Y4 r" R6 D( Y/ z3 r0 y) L! n0 ]% W
效果2:- g* O! [6 ?7 U# ~6 v

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

( @; J' e4 a# v2 M( x7 ~
2 p/ G- \8 M9 Z  V
安装启动

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

& @) J( m5 [$ I9 k  ]


# P8 K; x+ y) U1 w7 P$ w& }; _" y: x1 ^+ j
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>, L* g! G/ v( a# H
  2. <script>7 N6 C" @9 Y+ i# R' G$ _
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    7 I( X" k# ^2 F; b" |; c
  4.     var socket = io('http://workerman.net:2120');( M. X. n& i3 \" S
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    4 E9 o$ J; ^% w" H! b; ~: E; r
  6.     uid = 123;! v8 W1 F) a& G+ p
  7.     // socket连接后以uid登录0 j7 z* Z( K* F* }$ E
  8.     socket.on('connect', function(){: C. F! r0 [: h' d
  9.             socket.emit('login', uid);4 [. J9 a- O: v4 `$ Z/ D4 I
  10.     });
    5 o# f  I1 a* q/ l$ S5 u) [: {( `
  11.     // 后端推送来消息时
    $ k2 ?4 w9 \" q% m3 S
  12.     socket.on('new_msg', function(msg){
    9 S" W0 i; j+ ]9 ~) x
  13.         console.log("收到消息:"+msg);( ^: q; N* B- {  d
  14.     });
    5 ~2 [& i1 k" d% D; [: V" z
  15.     // 后端推送来在线数据时) e1 A5 {* [* }' z5 W
  16.     socket.on('update_online_count', function(online_stat){; ?  ]# f5 G( ~4 B  E" F# }7 |
  17.         console.log(online_stat);
    / c2 }- _  E) h; G# s7 D9 r" l( g" G
  18.     });
    ; O4 h" |/ v  @) D
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    2 [5 J( x9 |2 v4 {. _, G
  2. // 指明给谁推送,为空表示向所有在线用户推送
    : {- v  q- {) x& d4 G
  3. $to_uid = "";
    1 I' C: {0 w5 O; ~4 W3 _4 x; D
  4. // 推送的url地址,使用自己的服务器地址/ Q: L' e2 D5 f
  5. $push_api_url = "http://workerman.net:2121/";3 B: D+ c# z" A$ v
  6. $post_data = array(
    " p  }+ u% Z* F! b: h
  7.    "type" => "publish",
    , x/ Y- v4 [/ R& y; l
  8.    "content" => "这个是推送的测试数据",
    ( S0 @" q1 l( Z5 L8 @- O
  9.    "to" => $to_uid,
    - \2 G! X7 y2 s! e1 O7 y3 l
  10. );0 Z/ V6 z6 ^# a& }
  11. $ch = curl_init ();
    ' L3 ]# t6 j" \; H
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    - ~" s" _5 E0 X* p
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    $ a: C, }, K$ C- _" r& M; d
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );3 \1 w0 J. L9 n" n% w+ y
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );# @7 R& H4 [+ G0 x( G
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    % K, R8 {* O, D, X) a. u7 q
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));: @0 I2 C9 m% O0 {0 J: a0 G
  18. $return = curl_exec ( $ch );) Q/ ?7 `/ o: Q1 ]  F
  19. curl_close ( $ch );8 @5 h- N( \% l0 f3 w
  20. var_export($return);
复制代码

3 l3 S. z5 I0 j& {/ `0 J& F
, h* ?6 ^+ W* `5 a& W! O3 Z! S* d) [% v- r& X9 v

' X' @4 r+ [. a, k% I8 U

6 z4 v2 Z9 l# n' H" P( t  I本文摘自 https://www.workerman.net/web-sender7 |; f1 L' Y( }1 y4 E: O
1 _7 a4 j* ?9 q: x( f' ?. s/ ?+ t

- R# r( Q! C% R8 F( T2 y. c$ U& c6 P9 @

% o* C- ?9 c+ F% A* ?2 V& y
' B* E: \& y/ C
+ ^; s) m. F: N# d
( ^$ S9 S2 Y" B5 [6 R8 P3 q# [
- |' ]! K; T# \

0 }5 [1 L1 u1 p6 e

2 L, J; M" Y! I9 k1 w+ S
+ q9 x; J4 N" I" L% v0 r& M
" _; u( r0 \8 t) J  z

# \8 C' Y8 G3 S0 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 04:07 , Processed in 0.080360 second(s), 22 queries .

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