管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
$ h m: }( `+ ]- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
8 V% ~" |) g% _# b7 \# _! i 下载WEB消息推送框架6 {7 m) Q2 U/ p4 p x
: y+ @' z# |8 \: Q: e6 v$ T 下载19472次9 w/ J) e' u+ T/ B
) h& B$ K" k7 A6 f! E1 |, F# ^PHPSocket.IO开发手册* f( Y( k( C# W. d' f& a
# |. \& x' e' o# o) I
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content- I. k) l) U$ e4 W: T3 X+ H# b
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
4 c) j$ n' h5 e1 O. `2 S* s效果2:
4 |# w8 G7 F- A. w( s$ g: W见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计 9 |, @5 E; x3 x8 q( Z$ g3 h
: e9 B) v7 l% R) P6 ]/ 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
3 n, O3 V# y& R5 h; l; G
j# H4 m# @5 a0 p9 ^2 }
0 ~, d8 c3 f# A2 B前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>" E9 |) o+ J6 V9 @' J8 @7 p3 }' O
- <script>- U% \4 ^3 G# Z3 P h
- // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip# G( ^1 K7 R; C* Q+ Y, d* _) C
- var socket = io('http://workerman.net:2120');
0 x# u% }; n s0 r/ j( l9 s - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数/ o( I% q+ Z9 `4 ~
- uid = 123;' Y3 \0 E3 y3 ^ A
- // socket连接后以uid登录
# }) S& L2 v3 R6 n - socket.on('connect', function(){
( O1 a5 n1 Z q1 I" p7 ~ - socket.emit('login', uid);$ F4 S) k. P9 e. E6 V3 A3 O
- });
- v& W% W0 ^8 n$ Z8 W9 g: M - // 后端推送来消息时
9 W6 ?- ]1 i) I' h0 E: @( d - socket.on('new_msg', function(msg){
A: l U5 ~. |: ] - console.log("收到消息:"+msg);
" c* Y2 t6 c6 I, s' k - });
6 y% \% y+ x! D0 \. L - // 后端推送来在线数据时
! |: Y' y9 G+ Y+ r - socket.on('update_online_count', function(online_stat){5 [; G8 u% x( w5 l% w' D
- console.log(online_stat);" ]2 I5 z1 _2 K; X
- });# z: q% ]: v4 w; b4 l# M
- </script>
复制代码 后端调用api向任意用户推送:- <?php
/ [$ j6 d9 M) ?5 U5 p - // 指明给谁推送,为空表示向所有在线用户推送
! r. v% U4 w. _ - $to_uid = "";$ g3 h, _) ~) c
- // 推送的url地址,使用自己的服务器地址
; g6 H$ ]6 l3 I( ^- k: D: W - $push_api_url = "http://workerman.net:2121/";
8 d$ J/ `% f) W o3 r2 E - $post_data = array(
( M9 P+ `5 V0 ]5 ?7 T+ h - "type" => "publish",
[) P4 ?6 I3 Z3 q: f - "content" => "这个是推送的测试数据",3 A. M6 ?" d" V2 P( k" v
- "to" => $to_uid, , F& Y7 K) |% L( {) J, l
- );
: _; I) v( a7 h* s+ J3 P - $ch = curl_init ();
" h$ g' b* ^5 f* M+ O; O7 g - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );8 c0 K- r2 y! P
- curl_setopt ( $ch, CURLOPT_POST, 1 );
: a- Q$ \" n, a' g6 I; H$ i - curl_setopt ( $ch, CURLOPT_HEADER, 0 );/ f5 d( o4 E5 i, x$ }
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
3 F k9 t% k* A" m - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
$ ?; W5 ]. J" W - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
1 W7 H, R: ^0 f - $return = curl_exec ( $ch );
+ E+ }7 K$ G8 w q5 k/ k - curl_close ( $ch );3 P* T6 H( f1 j$ H( c3 ~8 @3 Z
- var_export($return);
复制代码 . T0 r- `4 \9 _ k3 Q( u5 S h! n
. S' F# ]6 w& x5 k4 ^# w% w
8 c2 o2 m* w/ \! J7 M# ` n4 T4 h
( u: T' C3 a+ B6 t, J2 U
本文摘自 https://www.workerman.net/web-sender
; {; B" m5 K, R- c- \$ q" p# N* f+ H2 ^5 a7 j k0 J3 R5 R/ ?
7 H. I6 l. v5 Z3 I9 J
1 _# ` [& A- V+ o3 F! G$ `) v: s
1 ^5 o* d: Y8 Q% k( f
" R1 w$ G3 `( a! y! K
6 V4 G( f9 M2 X8 Z
2 r; g! l* [! O. A+ _( K2 L$ F C- e5 }
& W: U" G# u5 C+ A3 B) r2 E5 K) V) T5 V8 X% @+ h3 L
, t9 w% I2 j V" c5 [" i, d# S% J
n* B9 A" E" k( J( Y
: G& R% I1 p/ B8 m7 W |
|