管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
5 k3 `* P/ B; i' m# D- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
0 t/ X* B# `" C, H* N) T: z
下载WEB消息推送框架
0 H# j- m2 z, p- a) z
- Y) q! K* B1 I- ?$ |7 d; w0 F 下载19472次) ` m1 `/ G, a( @8 f) Z
8 O+ K4 F, z6 KPHPSocket.IO开发手册
4 [4 j2 I2 ~$ Q% y5 p+ |) f2 o+ {2 L e5 ]
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content! z; \/ b9 v. N# L) O
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 ) j/ Z; \. i5 u( s# B
效果2:. ]- z: I$ b0 ~
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计 # N: M: o$ V1 j
- H4 N; W2 Y! g3 c5 f安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组) , N% R: u, {( _4 H' s6 w" }
2 N; h: ^/ X# ~' {5 x6 n) u
7 g4 ?& S- Z3 ?前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
3 W( F# W. d. ~. \ - <script>: ~7 C! H% V1 e$ R
- // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
1 {$ \# k6 q7 L8 ]& m - var socket = io('http://workerman.net:2120');+ A! D& {) e* |# o0 ?
- // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数* T2 i, G8 d5 [3 e
- uid = 123;
- O9 n9 p7 i& I - // socket连接后以uid登录( Z: a, u# x3 ^+ t; j8 N! K6 D
- socket.on('connect', function(){0 g% [; s7 l o/ w, a
- socket.emit('login', uid);
) Z) K- i: t( p/ i2 r( Y$ L) N - });) X7 O& [8 Z5 M* H7 L$ h6 u
- // 后端推送来消息时- g9 ]+ A# w6 C, f& S* b
- socket.on('new_msg', function(msg){2 a" y! G. ~* E0 k s+ ?$ f
- console.log("收到消息:"+msg);2 c) V* M4 [3 o) I) W; ]7 ?- V
- });9 \8 L7 G6 F1 |4 e# ~* r! x
- // 后端推送来在线数据时
; q; q7 d0 O' @: [3 V5 r - socket.on('update_online_count', function(online_stat){ d: @& G8 _- Y( w+ P
- console.log(online_stat);
, ^3 v9 X6 @, ]% q( W - });( |+ W% _) P9 J8 D
- </script>
复制代码 后端调用api向任意用户推送:- <?php/ }) n! q2 R- Q1 y9 l- a, F/ ?
- // 指明给谁推送,为空表示向所有在线用户推送
$ v: s0 {% q" b: U - $to_uid = "";3 ] l/ u) u7 `0 w
- // 推送的url地址,使用自己的服务器地址2 x" s& S2 X, o* g
- $push_api_url = "http://workerman.net:2121/";
" D# n! d3 x5 u# [: q - $post_data = array(4 _4 k2 x# P/ O
- "type" => "publish",
- R2 b8 U8 t3 E7 a( n( E - "content" => "这个是推送的测试数据",
! q2 V* K4 D9 B: k. ^5 I - "to" => $to_uid, ]# O. _4 T" q5 U0 [) F
- );
]6 U# h8 @: z. q& ^ - $ch = curl_init ();
- |0 G5 m$ z" j" ?% L. a4 n - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );. g# e$ y o$ ~# @
- curl_setopt ( $ch, CURLOPT_POST, 1 );0 ^7 U2 n1 T, V w8 H9 d' b X) z' z: C
- curl_setopt ( $ch, CURLOPT_HEADER, 0 );% k. P; n3 ^' ?. x; r _
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );! L, A3 \ A- e8 Y- Y
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
) Q* S: y! Y# z% i' [) v - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
& y! d- `% z( ^* E0 \0 ] - $return = curl_exec ( $ch );6 \$ {+ A; K/ u' d
- curl_close ( $ch );# ]. p9 D% g/ G6 C8 C
- var_export($return);
复制代码
* f. q8 e" d8 R( i* M3 y: ?4 B- O
) s6 z/ c; k2 ~& V+ @ U) M
! H" C! M% }$ X
- C, d% j% D! Z4 k+ Z, o9 A4 t5 J# l# y1 L. Z3 \4 {1 s8 X* z
本文摘自 https://www.workerman.net/web-sender
% v" }" E* \4 C& W, ~) h
N" X5 R3 o9 {. o% i. O; V; ^/ Y+ i* A" _" V, n. q4 B: S! e3 {
. _ c: j) a/ f* @2 x, w# e, w: v: ^* J6 U# ^, l2 R+ p
6 {, R6 l; Y5 x# ~$ ^4 n% l( f y; Q) l
) t+ s3 \6 p) @3 x/ z, O K' u* M
2 \4 q3 T: o$ M' M+ j
& P) o+ N) k9 A6 f" ?0 Y: H6 e' G! |
/ U9 [+ o5 @' h, `) ]
. k1 d: ^4 s- O7 }9 M7 Z' C) f, w
y3 b0 Y2 s% d6 @0 k U' L% ?* E: Z3 D
|
|