管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
; B: x# T8 w3 Z3 v3 W5 F3 p- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
) ]( u# m& Q" y w3 e/ l1 N 下载WEB消息推送框架
6 b* z F2 Y( j8 Q" T7 i& z5 m7 ^1 M, c/ v
下载19472次; Z5 E; ~! ?9 Y; O: o
1 j2 M1 @3 s- c! U' l
PHPSocket.IO开发手册4 F9 K8 a; h8 t# d2 d8 ]+ M
9 O0 {8 A6 M+ \! I! d
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
" h8 x3 w8 _& {其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
" e8 Y$ p0 F# e7 `+ A效果2:' Q0 N7 ^: i6 X; u8 Y
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计 : l8 ~: `, c( g9 ?' O6 t# P& _
3 g- b' Z0 a7 j: y1 I安装启动首先:参考手册检查/安装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 i: c8 g* m7 p, d/ `
8 a$ R7 k3 z6 S1 `7 k" l: z+ G5 }6 E4 P* X
前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>5 ]9 }" |! Q5 j
- <script>
" e) ?& }4 s: |3 C - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
# l8 A" p5 b8 ?0 Z! \ - var socket = io('http://workerman.net:2120');
" d; P0 j3 k3 W) d' C* W5 K - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数6 K/ X9 T7 i5 U$ l
- uid = 123;
- Y1 j! I! O2 w - // socket连接后以uid登录
5 I5 t8 P: a. D& P- U - socket.on('connect', function(){$ _+ ~' L" H/ d; x; x
- socket.emit('login', uid);
* a# S% w( V' B - });
0 f R0 I% _* u9 y! P - // 后端推送来消息时) J: j) _" p/ K$ l9 D. B* K
- socket.on('new_msg', function(msg){. e3 q2 l' ]6 H" E/ D( P7 I* ~
- console.log("收到消息:"+msg);; [; t4 o& A, y$ t: L4 F
- });
& W4 f: I5 m$ K; h: ]' J - // 后端推送来在线数据时
5 w5 I/ O2 A9 v: L2 ~1 H - socket.on('update_online_count', function(online_stat){
& Z; T9 \+ y# B% K' q - console.log(online_stat);
( u A6 z: p2 ^: f. o3 N - });
, m4 o+ Q2 p f0 D4 D - </script>
复制代码 后端调用api向任意用户推送:- <?php4 j' j4 i% b6 z2 t5 d, o
- // 指明给谁推送,为空表示向所有在线用户推送. e& G* n6 u/ g; F! y
- $to_uid = "";
. b1 F. P# j1 g a - // 推送的url地址,使用自己的服务器地址7 O1 t: v9 U8 Q; x! U; C
- $push_api_url = "http://workerman.net:2121/";% n# x4 J% g) _3 |% J9 n
- $post_data = array(. f& M. e! x0 m; Q3 ?5 b8 \$ r" o) ~
- "type" => "publish",
E! w" F; k( N, X9 {( }$ p8 I - "content" => "这个是推送的测试数据",
* Z# {2 [' K9 u/ A! I3 s - "to" => $to_uid, , t* p, ]5 N( R6 @( U4 [
- );; R. j' Q8 J; W; R
- $ch = curl_init ();% w, B# r9 y, Q- D6 c
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
4 w$ X/ h0 p7 u5 }: m; R - curl_setopt ( $ch, CURLOPT_POST, 1 );
- C! b& I# [2 z0 H% Z - curl_setopt ( $ch, CURLOPT_HEADER, 0 );
, }/ ~* f1 A/ g) I; P- g - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
- s N- \' S/ ^; D% `" ` - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
5 ?5 G8 [& s8 ~* R; y1 m - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
( U/ {+ s2 Z0 v& L0 Q - $return = curl_exec ( $ch );
: z }2 B& b* V4 I, D4 I2 `& ?8 r - curl_close ( $ch );
) x! c8 o' L/ p- B4 y! ?. V - var_export($return);
复制代码
: g0 v' {# C* z% S3 t2 Q2 k2 a2 \0 P3 j2 K0 X* w" e+ |
$ l" Z$ A+ p: R9 z, c6 }
6 n1 w7 E8 H8 ?" k0 M
- p: a6 O* [* Y! _4 h( `本文摘自 https://www.workerman.net/web-sender
L# k' o2 D8 V+ k7 a" H: H: M2 n$ m: D+ A
?) S+ Z; i8 F8 p8 ~
8 A1 k: |' j- V7 U# D0 c, h+ ?8 Q$ G b
% k" A! O6 i) K @. M$ r' Z# [ R7 s% Z1 Z
; s% F$ V2 E; ?( \# W
# N6 \ _/ O8 g/ r/ M' A
0 b s- ~! v. S" y# M
* J( `4 a; |( X0 b9 e3 a0 T k
( i) G3 F3 {& d$ i3 o. s$ c$ G: u0 C( o( I' e, N# o+ {0 d
4 _' d0 R/ Z; A5 x
|
|