管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
$ _) P- R: D" H/ [* _5 h- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
/ j/ O# j2 \7 n; p2 g9 a# k; h 下载WEB消息推送框架
( u+ v: A' s3 z1 r+ l- L# Q# N Y- X
下载19472次: T' T: n, T& L$ R2 }8 o5 p& G
9 d2 n5 Z8 S% [% Z
PHPSocket.IO开发手册
' f2 d2 _3 F( l" `
0 n7 ~% A; R4 C* C. i$ r1 @# BPHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
3 u& ~+ W: O0 d, Y- b: b6 Y其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
# I. L0 D% C. z- e9 D效果2:
. o X3 Q2 a: c7 x( s见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
+ u u/ c: Q' O4 a% u
) q) V! ]2 {% B) G" `$ K7 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组) * I4 x# g; K) {
( S" x" [. C3 `1 ]5 e
) S! g; E( g& q2 e( D$ K) z前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>+ [3 w! R" m" _7 j$ w; t$ q* D
- <script>
7 a/ c& U4 p5 M( W! z! s' k m - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip6 l2 U% ?( Y' Q) y* w
- var socket = io('http://workerman.net:2120');
0 ~( ~' o) V1 g; I4 b" Y4 j, R - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
% \" t6 c' N# C) e+ q" Z" _9 X - uid = 123;8 w# b; }! K- [* {& ]
- // socket连接后以uid登录- ]4 ~& |3 r6 y5 {3 D$ B( W+ k
- socket.on('connect', function(){; w# g$ P. T G3 j7 c# B7 l9 p
- socket.emit('login', uid);
! W6 N- Z1 X3 r' h2 R! X8 t - });& r7 |9 L* r$ v" J7 ?
- // 后端推送来消息时
, j3 w: q# R+ [5 H6 k4 v5 J0 X - socket.on('new_msg', function(msg){
( o% H0 @- S$ Z" M& t' S - console.log("收到消息:"+msg);' \) \0 f) Q( D% P
- });8 _* N$ G. Z: A4 Z z
- // 后端推送来在线数据时
9 ^$ b! q( i! N - socket.on('update_online_count', function(online_stat){
$ z1 a# f: s1 V8 q$ D - console.log(online_stat);
4 a8 S i. v7 V$ N( m! Z - });
" x; Y; w e3 E - </script>
复制代码 后端调用api向任意用户推送:- <?php2 J! |, d6 `5 G
- // 指明给谁推送,为空表示向所有在线用户推送
2 M& Z8 B' w6 P! E9 \ - $to_uid = "";
7 ?- \0 ?* d/ i+ G2 n - // 推送的url地址,使用自己的服务器地址4 M) k4 H* z( @' G: m7 l& S& _' U
- $push_api_url = "http://workerman.net:2121/";
- f+ W9 x1 ^# F; f+ K( k& D - $post_data = array(, m6 u% J8 M% j& v6 N7 L
- "type" => "publish",; v3 U0 Q3 M( W- P, Q8 P
- "content" => "这个是推送的测试数据",/ C4 H Y- u( ^8 [
- "to" => $to_uid,
% u; d3 J0 }' ~" }* U0 ` - );
0 q" ^& G8 U1 i4 C5 C" I. j1 | - $ch = curl_init ();, ~( u2 _* _( P+ o$ w( O, s/ F
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );+ P0 X8 C( p% N' r% G: H
- curl_setopt ( $ch, CURLOPT_POST, 1 );
4 x+ o0 I3 Q. i2 c8 o) z m: U; m - curl_setopt ( $ch, CURLOPT_HEADER, 0 );
3 Q( W6 R9 |) l& y1 T' L7 w - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
9 c& |1 e% t$ e6 G; y1 O - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );$ U4 k% i+ D+ c! t t
- curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));* k" n. I8 s% _3 \
- $return = curl_exec ( $ch );2 a. W5 I7 p( L. q9 {" R
- curl_close ( $ch );
1 @& s( x1 s3 U. t |3 Z% ` - var_export($return);
复制代码 ' x: l' H. O( n! t* G. O
2 K. f4 d6 m4 b. D# U: ~
6 Z* J, f2 t4 M; w9 H2 ]$ ], m2 D& \% p6 Z7 Y$ R9 x: W- p6 n
! V! V" |: a; H$ o! i
本文摘自 https://www.workerman.net/web-sender4 h7 p8 l% h6 i" E+ y+ m
* {* J; E% ]! t2 O2 j' J: d! k+ s* p! @' ~5 f8 D
0 d& X v0 H/ {! b7 q
6 |" k5 `1 D. j( h) n% M% V8 |) P" P; f$ W0 l1 g% {
, a9 c" T9 Z7 ]) B3 q
/ ?; O% Z& I+ K1 ~
9 y( [5 R& P" v1 V0 z9 w5 ~6 ^: y- r: Z" d9 Q
8 {1 A% Y0 T( u0 o5 J; { g
" f. S' i+ C+ K9 x2 N4 V9 G" w9 |# h6 A4 p: g
' \# {" J8 u; y; Q2 d; a' i |
|