管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
, a3 w/ l8 Z8 F+ j* t6 W! x& G H! m- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
* H$ U& q i4 ?- R% S" g. _ 下载WEB消息推送框架
3 K0 T0 f! M0 p0 I' k# s
4 _" n: o- Z- E9 T/ r* q8 U" Z 下载19472次
$ a+ B6 @5 x9 M" N9 H) _& c4 ~, J+ Z0 O7 H) `, ]) o
PHPSocket.IO开发手册
9 h, U6 |( V' Z' u" _
3 Y1 E4 ~+ m$ C/ b+ ^& JPHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content5 G; V0 x2 K0 i" T6 e0 @9 H) W
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 2 J; _+ I8 ^8 \- l
效果2:& Y/ j/ I0 b; u& q2 \8 G
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
- s; `5 W6 r% |4 z0 |8 A
~, e, m: s- @# o安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
4 }, F4 Q2 B! v
* p0 @/ G. l' Y) D9 v. S9 C& h$ @
, o$ q7 w2 a" [9 K前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>8 X7 E+ {- j `0 t% i! S
- <script>
3 x5 g1 V& S0 c9 }4 V1 o - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
# l$ N9 { U7 h, I7 h: ^ - var socket = io('http://workerman.net:2120');9 J/ W6 B. d+ b
- // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
' c+ f; a: D# Z, J, E0 f; F2 ? - uid = 123;+ z) ]9 p6 d6 k) }
- // socket连接后以uid登录
# C l' H0 A0 X( k+ _0 @# Y - socket.on('connect', function(){" [/ f& q4 ^- G" ?) h4 D
- socket.emit('login', uid);
8 p/ S9 s" `5 n8 [; p1 \# Y' r - });! U! ^9 w+ D# _, z) n; s7 |
- // 后端推送来消息时
. c2 v. Z4 _! o, s3 U% B; I - socket.on('new_msg', function(msg){
2 B0 c, a0 x6 u% E W - console.log("收到消息:"+msg);5 f, t! A% Q; B! ^1 a! x: N) }7 _
- });: T1 A) Y" w; B' m( r
- // 后端推送来在线数据时
1 b% ?8 z. A- M9 z% [& ` - socket.on('update_online_count', function(online_stat){
+ c) l: b$ S! ~4 S F - console.log(online_stat);+ u9 v& U/ L q% Q8 ?; M0 T6 o
- });' F) H+ L) X7 c" F- d j' X
- </script>
复制代码 后端调用api向任意用户推送:- <?php F- f! q& D5 p+ t$ n3 C
- // 指明给谁推送,为空表示向所有在线用户推送0 U5 m* g) M4 e) X1 z' p
- $to_uid = "";
P/ e1 d% O4 | - // 推送的url地址,使用自己的服务器地址$ M8 @3 p( l! N
- $push_api_url = "http://workerman.net:2121/";8 R0 I9 O8 T5 I N/ @
- $post_data = array(
5 E/ {9 J7 r& L/ @ - "type" => "publish",5 q' ]9 g' P- m& z8 r& L$ |
- "content" => "这个是推送的测试数据",
% @0 Y4 Z( y1 ]4 c: ` - "to" => $to_uid,
8 C& r* D" }6 i6 { - );
' I/ j5 C" O+ ^$ Q& O, y5 {. }+ F - $ch = curl_init ();
" h* M U- I) V9 ]. O! Y; S - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );1 F& e$ V) {( F' C4 b9 u& h
- curl_setopt ( $ch, CURLOPT_POST, 1 );
8 M; b8 p9 J2 ?% l - curl_setopt ( $ch, CURLOPT_HEADER, 0 );# B2 p1 ^) t, o3 c- M! [" d
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );$ ~* P! O* k# V
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
: `7 T; b X. D0 m - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
* J% x# e7 h p7 |% w" M - $return = curl_exec ( $ch );2 K7 j/ Q* P0 b0 {0 W+ x; k
- curl_close ( $ch );
/ A' e( r5 F3 n8 ^! h7 P8 x( n/ R - var_export($return);
复制代码
+ R" K z. F, B5 F' u# q |
) k0 z5 G; r* n& ]+ g) X c
* e; a" K8 ?* X8 q6 ]7 c U* O2 t) i
% v+ Y6 v3 l: v5 R/ @/ m
本文摘自 https://www.workerman.net/web-sender
4 |- a/ n9 q. O9 W0 {. j) R
5 o# R6 j$ ?9 n
* @& ]6 x/ S; S3 X- e1 k2 D0 B4 f6 |3 q, k
* H4 J' x0 i$ P- P6 i* g
( ?: Z! W5 w+ |* E9 ~2 |4 T6 h+ }% y( h3 H7 b, G! a
9 F5 j2 V6 ^& z# W' b* W6 q) S) b
% b* x8 d. W5 |0 ]7 \" Q
' C3 g3 \3 i3 r0 R2 q+ _% G
: V+ J' M+ V- ]2 h# v
, j6 r, j2 ^, n: N3 G5 `# e% @ A' A& X& M0 C5 q2 C, | ]8 g
" @( ^: l& x" b j' H |
|