管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:0 I8 l0 d, b4 y0 }8 p( C! s
- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
e) y' L. D4 ~. f
下载WEB消息推送框架: u. j6 a( t6 ?7 E$ [) i) x6 m
* q% q7 J/ x1 x3 C ]) }
下载19472次8 X3 V/ z s) g" t
# O6 L& O% I3 ~) e& t
PHPSocket.IO开发手册4 d4 f$ X- _ |$ T" B6 H
9 D& g/ a/ e5 n4 P# |# s
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
; Y* y" }0 @2 X5 D) j+ F其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 ( x2 y# m6 x0 S% R4 j
效果2:
5 {( ~ j: z; \$ [0 H见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
S) m' d, U5 P2 |8 l
) F- A( X3 {0 s- J# h安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
& o( F0 b/ I; I' ?3 v
. o( o: ^+ U" n1 m/ w' |$ j
+ \* `! p% c7 k7 p前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>' m6 }/ ]' x6 M. g
- <script>
R/ b u% @% x" z* h/ _ - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
! X5 g _: k4 q- L; @5 O" a - var socket = io('http://workerman.net:2120');
6 o9 X6 z* m" ?) b3 h5 l - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数7 O4 T' [4 @5 n# l! }% ^8 X
- uid = 123;" J: q' ~% x8 S/ d( f: h/ X
- // socket连接后以uid登录8 S9 ~* r2 l/ q, r |# z( x) v* E1 m
- socket.on('connect', function(){8 X1 ^ [4 Y4 P% X
- socket.emit('login', uid);
* ?1 R, F0 Z# |/ W - });4 E {3 H4 w, `* i6 l
- // 后端推送来消息时
* {. A) x4 m, o7 b: G - socket.on('new_msg', function(msg){
8 G. G) U7 B' t5 Q - console.log("收到消息:"+msg);
2 ~7 Y g4 w$ y+ C - });
( I- G, {8 P! v" E6 T! \) y - // 后端推送来在线数据时
& k9 c* K6 y4 a - socket.on('update_online_count', function(online_stat){
* c, G7 a% C1 i* n3 r) Z9 p7 [ - console.log(online_stat); I& |1 ?# V5 E. ~! X6 S
- });1 N, }3 M1 B( V
- </script>
复制代码 后端调用api向任意用户推送:- <?php
5 S, ?4 x# b0 ^# z8 w! R+ w - // 指明给谁推送,为空表示向所有在线用户推送
& D3 J6 o9 G+ ]& q/ T0 d - $to_uid = "";& y3 F0 Q/ X: F- ` L" ~0 F- ~
- // 推送的url地址,使用自己的服务器地址
% v3 D/ {( H7 L7 y% B - $push_api_url = "http://workerman.net:2121/";
% c; |/ A+ W4 n- g3 _/ {# w/ L - $post_data = array(/ Q9 h. W' U3 a3 r8 y
- "type" => "publish",' }& F4 M9 V9 u, ~4 S
- "content" => "这个是推送的测试数据",
" j) r: z9 i0 ?' T2 z4 D/ M - "to" => $to_uid, * l5 W# \3 [3 P
- );( ]0 z( e5 N i/ ?% K& f0 z4 ]
- $ch = curl_init ();% J* P5 `8 U ?4 u
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
. ^3 a% ^3 F: x9 f( E5 l - curl_setopt ( $ch, CURLOPT_POST, 1 );3 {- J: `# A6 L" _- T
- curl_setopt ( $ch, CURLOPT_HEADER, 0 );
" g8 U$ o" C6 w3 ^% n - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );+ J! e. p* S: P% o) F
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );: O9 t8 {0 P! i( _: g2 ^
- curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));/ M2 H, ^4 E5 D; r! k5 q
- $return = curl_exec ( $ch );
9 x2 t, t3 q& `* b) @9 ~ - curl_close ( $ch );
: X$ O$ N6 Q: e# l- o" A0 A - var_export($return);
复制代码 % }1 w+ T; N/ Z" y* {
9 B& K* u. j o- j( e
' c% K6 e; h: [( J, i
+ Q+ M* x/ N: z, C9 ~1 X
4 r' R3 j5 `! e W本文摘自 https://www.workerman.net/web-sender7 h3 Z0 ~; V) h% e4 H* s( ]5 K* ~6 r
! r. m7 S h5 u0 T3 P' h
0 R# K4 I" t+ Q3 s! j1 @$ N9 ?8 k/ l/ ]6 O9 J
2 J0 z# W* U6 o$ M6 U; u7 C
0 K; @/ \+ e: b( Y0 H4 V
# e$ C7 n" e2 C7 ^6 l$ z' x; \
: V" e5 l- N5 o! X! X2 C8 h! m4 l
& @, l7 M9 g$ F4 ^8 `
5 H& v+ j* s& w& s" J8 }& f' B+ F, `) Z- i8 E } u. t
" h$ _) s" g6 \4 [. O ]/ Q2 O+ Y' c) Z9 W, `& o: i+ F
, H2 @% I8 e( z" h: c) N; q M |
|