管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
! R- m" W! R0 C7 X- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
0 k7 |) Z0 G* x5 W 下载WEB消息推送框架
5 F+ L L5 x# H$ G% m) e/ v" O2 s( d! v5 _+ n
下载19472次
$ U' z! W1 v, U `, u. _9 f$ R6 Q6 D% t4 D' E# s/ e0 R2 u
PHPSocket.IO开发手册0 C+ k, A; f/ u3 |# k9 v
: M- l$ p- n5 h( A/ ^: c0 t9 W! uPHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
- ?( ~: E) I; P2 }其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 & ^' G/ D1 \+ B- M5 w# t
效果2:8 u7 t8 p/ \, k+ @' i
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计 ; h2 W/ W+ r& Z
7 @& I6 }% ~, d安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
! ]) Z: T. P2 n* ~& X: T1 k+ x* l
- p: l8 v. h* X4 H v6 o
5 }5 q2 [$ g7 v" t; N( N* z前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>9 A# N) L' E$ i- e1 E, s! X
- <script>* F3 ~; ?: e4 U. `
- // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
# U9 w: ?: `$ m- W - var socket = io('http://workerman.net:2120');
4 _& ^* t! T% k$ }) W9 E - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数# Z0 L5 v1 @6 z, G$ @3 x
- uid = 123;
& O- l: w4 } i6 E' u+ w - // socket连接后以uid登录
, W2 L& v# h; q& H1 u* E - socket.on('connect', function(){
* X' w0 u$ \( k1 R5 `% W1 ^ - socket.emit('login', uid);) z1 y0 K, I) k
- });
1 E% U7 v( v6 v# h) R9 n: ^' D8 l - // 后端推送来消息时
5 I5 W9 ~1 j4 ]% Z - socket.on('new_msg', function(msg){# \; ~3 i% r2 m v1 C3 a6 b
- console.log("收到消息:"+msg);% |* A! S6 y. Z' T8 N! s8 v: x C
- });
% a8 K5 U$ u1 O6 r - // 后端推送来在线数据时( }7 C& J! z6 g8 f
- socket.on('update_online_count', function(online_stat){
5 B% y' |& `) d7 F# Y- O8 V9 w - console.log(online_stat);2 p4 ~' N0 Y* _6 i+ ^: l+ X
- });, ?( q; i5 E s1 k; Q4 \
- </script>
复制代码 后端调用api向任意用户推送:- <?php3 @' u: j4 [& j& v9 ^ F
- // 指明给谁推送,为空表示向所有在线用户推送
3 M8 z- _$ V: S; x! f. S( L - $to_uid = "";) T! n7 a1 N- Z" { I" u
- // 推送的url地址,使用自己的服务器地址
' Y* c( d) ~& s5 x6 [& _ - $push_api_url = "http://workerman.net:2121/";
: E6 C0 g3 k9 s- e! k- V* q2 k - $post_data = array(- T) t ~1 i h# P6 _$ N- U
- "type" => "publish",
( ]% H1 l8 m- k' |. V - "content" => "这个是推送的测试数据",/ S, ]# S' s/ E& x8 V0 L1 Y
- "to" => $to_uid,
+ n$ m6 n4 E& Q# o' w - );! K. [* h% a6 R4 [/ \2 {
- $ch = curl_init ();
0 @" T* u Q: P( i - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );! v( F5 D1 o1 F) I* e7 h: v3 P
- curl_setopt ( $ch, CURLOPT_POST, 1 );5 Z; F: t8 v# W$ p( U8 e2 a# z
- curl_setopt ( $ch, CURLOPT_HEADER, 0 );
( H" N# G& H6 e - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
" r+ ~. l/ J5 x. O7 V3 w% U - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
0 E6 g" Z; A% [5 x - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
# r* K G1 X# [( I: y) ~ - $return = curl_exec ( $ch );1 k8 _% r# }' @' c! l! p
- curl_close ( $ch );
/ C8 _6 v. F, u: @ - var_export($return);
复制代码 $ f y) S9 n+ z7 w3 {
A! n6 E, E$ g; l6 R. \- _( T/ s& D
, ]0 M) U# i0 P$ e* S
5 @- {* c3 h2 ?4 M. O5 @% j) U
2 d5 q/ \; \# y本文摘自 https://www.workerman.net/web-sender; h+ O$ Z2 g1 e9 O
( c7 m1 R! d# |& j8 o# E- D; l
4 [. ?; W, t- U+ `& _, l+ Y0 b# F# d; u
: ^( F- z$ k5 l6 [7 C: @
0 |: F$ j* K N5 }& W. n+ `- V/ ]) m I+ b+ x) }
0 g/ `) |' ^8 R, T- J5 m8 M
2 B% z6 C7 ^( h ?
; Z; C B' ^7 w% k Q( a; T, A& {8 ?1 ^3 M" E
0 H: e0 Y3 d1 E+ T) Q
& q& `2 D) W' C' P1 j
5 j! Z- S: b k) D% j |
|