管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
5 ]- o3 V* ~8 v- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
5 U8 {* _5 E7 t, C 下载WEB消息推送框架
) w$ d m. {% X) W6 o' z3 E7 B4 S) _ v. [
下载19472次
, X+ j% N; D/ {- `( }, Z/ E, Y$ w7 K4 g1 t l
PHPSocket.IO开发手册
) C0 B$ ~4 r! U, Q6 K$ c
+ C, }8 K+ L+ aPHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content% Q6 h, U& M; d8 }: `# c
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
5 d# C6 K: r, w+ i0 w) C效果2:
: z& S! g0 |' _, c* ?) W3 L见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
g' X5 `$ I3 Y8 a
/ R5 v- ~1 F0 Y安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组) - U1 E+ H: \7 s1 L9 \
4 w# T$ }0 n7 H! s5 r
0 L9 `2 p+ d T前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
. N, x7 g! G$ ?& ~% J8 g - <script>1 Q9 w+ C' J( e, O! s
- // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
, R9 `' b7 M* x( K# m4 A - var socket = io('http://workerman.net:2120');
4 i( G# e& i C - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
S4 N! l' Q% L4 T( ~. N5 { - uid = 123;1 L7 Z- K- Z. _
- // socket连接后以uid登录, \1 b5 q6 L* c1 y& w, M5 U0 m+ {
- socket.on('connect', function(){$ x7 R: } L T
- socket.emit('login', uid);3 f. B3 o( w3 |
- });1 p0 x1 ~( @9 k% K* n7 ^
- // 后端推送来消息时
1 J/ d |, Q% m9 V# ~ - socket.on('new_msg', function(msg){; d) ?. u, F$ g: T8 F
- console.log("收到消息:"+msg);
+ w: U) i2 S, e9 X! | - });
' Q0 _: @ p1 z/ e" D* r - // 后端推送来在线数据时
$ K; T( M$ m; B/ F% s: y5 n8 I - socket.on('update_online_count', function(online_stat){0 Y ?' a; i, I' V9 [, {0 D* z
- console.log(online_stat);( W e! k1 e' z7 R4 w) K, y7 E4 F
- });/ U2 F* }/ _' g3 k, f( e. y$ T8 x
- </script>
复制代码 后端调用api向任意用户推送:- <?php
. I7 E6 c* t- H" P; E - // 指明给谁推送,为空表示向所有在线用户推送& _$ G" S y5 w* F, t( B0 P, v: z
- $to_uid = "";
# r }1 U; b# Q - // 推送的url地址,使用自己的服务器地址& ^3 Z q, o! B- v/ z9 @
- $push_api_url = "http://workerman.net:2121/";
9 L$ |) P5 B" n# V# p( u/ u# W" l - $post_data = array(; k/ u/ g, i0 J' B
- "type" => "publish",
2 |5 y' W6 _6 u4 [ h - "content" => "这个是推送的测试数据",
1 F) g) m! n) X, B6 d3 I - "to" => $to_uid,
8 }, j) i3 ^+ P( x - );
2 ^/ C4 @* F4 N( k( n) r0 ]- T - $ch = curl_init ();
! @2 W1 H. I4 b& d& L1 M- e1 H - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );& k, e5 D) l) C2 o# _& U* \
- curl_setopt ( $ch, CURLOPT_POST, 1 );
. s+ h% l8 ]8 ]2 C! w0 v: d - curl_setopt ( $ch, CURLOPT_HEADER, 0 );8 I4 v1 w9 @' M1 |7 C
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );. P/ H+ ~& @8 R# J
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
" P, K$ K1 c- U0 u - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
* }0 Q6 P- m5 c% h1 B% ^6 ~6 x - $return = curl_exec ( $ch );6 z0 _% j5 X! h2 }5 o) D ]
- curl_close ( $ch );
0 I3 \3 z3 Y, V- Y9 Y* w: K - var_export($return);
复制代码 ' R2 ]" P8 Y9 D" D3 v( Z5 }% g5 o
4 R2 C2 W V9 K$ y; o o
, T! P( `, J I
, D' K& s( t8 k7 L4 k* m7 K3 J$ y& l* ^: t
本文摘自 https://www.workerman.net/web-sender
9 Y* D( P( }& C9 {% ~* t2 F) n% u6 |
2 J, e V, Z- K3 i- u- r. F
& j# h! |8 v% Q
4 L1 o. d. ~: U9 O5 z3 M) S
! G5 W" q; X1 t, n- Q. e% q
7 f8 d! q2 Y% p B: Y' p
% d7 ^! f1 F3 r7 v+ I' X: y2 A1 G( J
( v3 f. j( K |8 e: Q: @6 q: x1 Q1 y
- m9 x9 f/ H/ z' z+ o' s6 H" f+ P5 b$ ?# x
8 w2 |/ A0 Z8 S( t- {% T
: x( m: Z: ~4 k9 \$ q+ {7 r9 K
0 g0 {1 M$ N. t
|
|