管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:( y' ?$ _8 y' u0 [
- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
; Q& y C" M& z7 w5 p 下载WEB消息推送框架, ?9 |$ F6 e! {8 q
6 h7 }1 n* U" x1 L( A7 k% D! a3 ~ 下载19472次* X2 G; F: e1 I. U$ y5 z) }
% _! C& X. [( J& E3 [( x8 yPHPSocket.IO开发手册# d, O9 g; S* T6 r Q v
7 z$ ^% ~6 F7 g) E6 MPHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
# Y2 G4 O3 _# e5 u/ b Y其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
& p* |+ ~! F @9 @" ^效果2:
: s- R; u6 ?( w% [( m见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计 5 A1 x0 C, m3 _6 }4 e/ o& z- O
! b p, _4 l/ x安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组) / t C2 `/ e% {: M
' h, i1 Q& ?0 [5 l' d/ h2 p
+ d2 L k$ B' G l) ]前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script> t& R2 P" u! M3 h+ w. \6 J" y$ L
- <script>: O/ u5 n& p2 k
- // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
- D& Q$ f- }/ R7 t) K, q6 j1 H - var socket = io('http://workerman.net:2120');
1 n3 c" I% v/ d7 x0 | - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
) k* S) q- C; m# V/ Y - uid = 123;
6 V8 `* M- K- d g: B - // socket连接后以uid登录* X; C9 q5 O8 L( k/ i9 U
- socket.on('connect', function(){7 \; C8 H2 U! h7 j1 R2 V7 e
- socket.emit('login', uid);9 c# C, |7 G7 Z* L! C q. E
- });) p; N: }) `7 b6 f5 |
- // 后端推送来消息时, d# {! L4 h; ~; [4 K6 w& M5 \: I
- socket.on('new_msg', function(msg){! p3 X+ B' f9 I
- console.log("收到消息:"+msg);
+ ~' |9 c) Q1 u i1 I! Y+ S4 ? - });
" g; H$ N. ?( v. |. k: }3 [ m - // 后端推送来在线数据时
/ V6 R9 @* z6 }- G7 Y - socket.on('update_online_count', function(online_stat){0 w {4 Z3 h+ M5 X! F/ @& x
- console.log(online_stat);4 M" x8 w6 y( G* ?; t
- });
4 i8 f/ z' } Z2 ]# s* {: B7 n! F - </script>
复制代码 后端调用api向任意用户推送:- <?php
" a, E; S9 g! b; I/ j0 A - // 指明给谁推送,为空表示向所有在线用户推送
+ \' {1 u+ o& L9 e3 s8 l0 \$ V - $to_uid = "";
$ C% c! g" v: Z. s' B: Q# K" i - // 推送的url地址,使用自己的服务器地址* Z4 v$ |1 e0 N2 a$ Z1 Y9 ]: w! _6 {3 u
- $push_api_url = "http://workerman.net:2121/";
6 j4 X/ |5 ?$ C. u- n3 Y4 k; v6 i+ m - $post_data = array(
& O( t. l! [: P) \ - "type" => "publish",
$ T1 t2 G6 K# |0 ]$ F+ Q - "content" => "这个是推送的测试数据",: v" y- ?5 i, S( b( c( y
- "to" => $to_uid, 9 d6 j2 }' g; A" |0 s4 E
- );. I' U f( L7 Q8 u- v4 Q6 b, B6 q
- $ch = curl_init ();$ e m! c+ R" u5 b5 `8 J2 T# r
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );1 p, l, X( k w- O$ J
- curl_setopt ( $ch, CURLOPT_POST, 1 );
! E: w& K5 ]) k. w. Y' w - curl_setopt ( $ch, CURLOPT_HEADER, 0 );* P" Z Q. [0 P, B; g, G0 E6 |
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
; |) |: v- z& f6 q# b& ?8 A - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
; z2 D# e/ e: S5 w4 t- u& y2 j - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
5 X2 f+ A' q. O9 d( r/ F& u: w7 ~& m - $return = curl_exec ( $ch );
: [) A% l) j) x. i% L - curl_close ( $ch );" z; {" Z# {0 ?& {- ?" I
- var_export($return);
复制代码 ; k v: y3 ^& |4 g# Y$ A4 B( n4 v
& m5 ]2 L' f: O' ?
4 S# E! ]$ ]: V/ f/ z, D5 P( t0 ~
4 G1 T* ?1 w0 @4 `! \" [: d, G/ x+ c# t. v6 A, t$ ]
本文摘自 https://www.workerman.net/web-sender8 Z4 ~& A0 E' D; v H, J5 }( h
( W: ]' I1 H! H) X1 X" D1 ]& m
- R/ Q9 q) g$ b0 O3 g B
1 w K8 }# \" k: d/ e( a+ o, ]
5 O0 W4 Q1 v' m4 T; _# v( P- y: j/ y% W0 W
7 Y3 y/ p0 V, j, d. m
; M8 v& ]7 N' T3 H" F
' r& D# H \2 F$ P8 H7 z# s
7 o7 I7 X2 i) I D9 {# r& E1 s# Z5 F; m1 f
" P4 i" F! D. H% f+ _4 x8 @4 C
! X; Y& s# A$ \/ t+ j$ Z) r
. {2 o3 r* j& p! A U* x- B |
|