管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
7 L: n' N+ L. h' P* E- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
. e$ [2 b1 f8 O- B; u$ P
下载WEB消息推送框架
& y2 K% Z' X6 e: U
( b% _. p+ `2 ]5 x6 z( N+ u 下载19472次$ C9 n S# J3 F1 n
/ Q1 Q5 V+ T3 t2 L/ J/ a
PHPSocket.IO开发手册
8 C3 s: v% y2 k8 t) Y6 h7 _1 S/ x
3 o7 e1 J4 {. G0 u1 i8 }+ I, M9 cPHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content! k: `2 q3 }, q0 u2 E
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 7 ^7 w6 \6 b4 M
效果2:9 {, Z" Z: j) @3 b0 w, k
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
5 W3 W1 N3 H1 y6 d2 g8 t
% `$ S$ F- i Y5 E4 B5 v+ r安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
! d }) i* A! `' d7 N- o- P- S' a
2 E* I2 J m9 r: N6 V+ c$ M, B+ @7 {4 j& A
前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
0 J; B& i& y8 H* r - <script>
$ o# E& o0 ]6 \* R - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip+ S4 }% l& `& a L0 _! I6 F
- var socket = io('http://workerman.net:2120'); }9 x* e8 D, J4 n# `- {0 z5 F% M
- // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数' w1 H' Y2 l, ~
- uid = 123;
' j7 p7 ]+ E" e2 `% J- d - // socket连接后以uid登录
5 t6 Y: `8 k5 w9 s- N - socket.on('connect', function(){
& [ Y9 d: d+ \) E1 d! x - socket.emit('login', uid);
5 C. s$ V( G% C9 t' ?+ h$ z! ]0 | - });) Z% p: d2 j, c# I+ r
- // 后端推送来消息时# Z( e0 o F2 R1 W- P5 F( X6 b7 }9 d
- socket.on('new_msg', function(msg){
: c, ~" w% U7 } Q0 F. P. w - console.log("收到消息:"+msg);. e. y1 U( i9 F; o4 V) ^! M
- });
0 ^ n* N& x4 h - // 后端推送来在线数据时
9 f2 O0 t1 h6 f3 s - socket.on('update_online_count', function(online_stat){0 t n" k! x: u' D, J; v
- console.log(online_stat);
/ |/ Q: ?( X: o! u- z - });+ p' t# ~9 {; |
- </script>
复制代码 后端调用api向任意用户推送:- <?php
, r x/ s1 u7 Q7 @" e* b" ] - // 指明给谁推送,为空表示向所有在线用户推送: H0 h2 g# z* a* `: E+ X
- $to_uid = "";
K+ H) W- f6 B. q3 ~7 K - // 推送的url地址,使用自己的服务器地址& ?5 w1 U% z; R* v
- $push_api_url = "http://workerman.net:2121/";' J7 E( ^+ N4 }* ?( P$ r0 T, \" n% |
- $post_data = array(
- e9 h6 _5 r' K" h& s9 s - "type" => "publish",
- P' [/ A' k% l1 q - "content" => "这个是推送的测试数据",
4 P, i' D9 A9 ]0 Z3 h7 p* d( h8 g5 y - "to" => $to_uid,
+ z* n$ N ^& `2 B' p- U) n - );0 k, ^4 p! U7 W. ]- a
- $ch = curl_init ();
J6 W$ z1 C/ b9 o; C# ^ - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
B1 Y* s. G! X- a0 w; G! h - curl_setopt ( $ch, CURLOPT_POST, 1 );
( p( t2 h$ M' \5 `) g) A+ Z( r9 y - curl_setopt ( $ch, CURLOPT_HEADER, 0 );' m6 O! U6 A- \0 z
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );% v r1 `; z) E
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );" @1 A+ Z8 X/ R) ?/ U. n" K9 |4 e- j
- curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
4 y& m$ E% S/ k5 I7 i# t* ` - $return = curl_exec ( $ch );) e* F: v7 p2 ?; g8 ?- [7 s
- curl_close ( $ch );
8 R+ ^; n1 A- O5 n) }0 Z. J - var_export($return);
复制代码
" k7 ?9 @" s. m* R& X* Z( a( {) u; ?9 x
8 n9 r( X$ K* ]
" u$ P; H0 z4 y) j/ p( K
# y6 @- R8 {5 Z* u1 \4 b本文摘自 https://www.workerman.net/web-sender
' y H/ q: u2 |' v3 D: g: Y/ Z+ t1 g, \% z I1 d0 v9 V
' q0 Z9 i, ?) J5 `! `3 {8 o; a0 ~; N' [2 h
7 O8 l5 c3 A$ D) T |
7 O: j. s- e' S. U+ F: @4 [4 C
0 ~$ D2 ]; q" t* L3 [( }# e( y
2 U- a2 D* m+ C+ \' U2 x/ Q2 ]4 {0 m8 z
$ y3 R! l v/ `4 v1 e1 m
4 W7 ~) g9 B- ]3 ~0 h$ b& h
! C# I% P5 j# f2 U. E- K7 z
7 c* r) F; d7 h& C( W
4 L7 \* q6 i4 ~( a4 @; Z |
|