管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
. I6 H" [9 c3 i. Q2 Y* \1 g- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
8 S' v& G8 g- Q( y/ D 下载WEB消息推送框架$ c1 q$ w2 g- f: Y1 R
, A, @. [, a! @% Q' q& t; D' ^: O7 X 下载19472次7 Z7 H8 Z6 H( ]" Y/ ~7 k. ?
$ N! W0 I' @6 e9 X. z3 x# ZPHPSocket.IO开发手册. p, P, k) z% x" L# {
* b! t% ~& k$ }" G" ~# C' ^
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
% w" }7 r" c: x6 z其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
/ G1 `$ i( a [* H# [/ m+ c! \效果2:
! E" {6 A1 E; {4 ^, C7 ]+ E$ Q见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
, f% o8 x; e" i) P7 t( B0 U: h% l7 @4 q3 | N; g3 G$ @
安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组) ; W" u- @! W" \1 r3 X0 D1 _
) }' t- h3 @: C1 T
% t; X; Q' \& D# E4 y! w: u' t. b
前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>! i h2 a- H$ c0 v; Z" L% u
- <script>
" S0 V7 l0 T# o+ R - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip$ k' B8 j# F6 Q; P
- var socket = io('http://workerman.net:2120');2 c2 X5 n* n; C& Q+ E* e) D+ Z( D
- // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
& @, r* r' r3 ~# s. c - uid = 123;% o& f6 X# l( z& z7 p
- // socket连接后以uid登录
/ j: G& f! B, a' _& `1 o - socket.on('connect', function(){
* ]. j2 q" {/ ^ - socket.emit('login', uid);
& l- d/ n u2 n8 t0 @ - });0 H( M0 |9 q6 V9 e: L: y
- // 后端推送来消息时
* o4 c4 Q' C* ~& p - socket.on('new_msg', function(msg){
, J; R: x3 \9 u } - console.log("收到消息:"+msg);
. q7 g. _0 U( I+ }8 J: a6 M - });
% g2 z0 F9 c! f# A: O0 O. a - // 后端推送来在线数据时
' Y2 t( s) M. A1 H9 e4 ~6 s - socket.on('update_online_count', function(online_stat){1 Q; G! F8 X) `1 Y" j9 e
- console.log(online_stat);
3 H, ?7 \0 z/ x: c# p. J$ K - });
$ W' m) ]. `9 S0 p) h3 ]7 C5 C - </script>
复制代码 后端调用api向任意用户推送:- <?php% r, W- F3 A0 }8 n O d
- // 指明给谁推送,为空表示向所有在线用户推送
5 k1 {+ ~( p0 h( W0 ?3 m - $to_uid = "";( ^* E* A$ \7 r% \. }. v5 U3 d
- // 推送的url地址,使用自己的服务器地址+ n1 g2 O: T1 K. y6 h
- $push_api_url = "http://workerman.net:2121/";. Y1 d8 _2 b+ Y( `
- $post_data = array(
' W+ J2 i1 H/ [6 ?; H5 }: l* ]+ a3 i - "type" => "publish",
! F" U/ f4 Q( W# b% M& m- ^6 [ - "content" => "这个是推送的测试数据",
6 `# a! |! t4 e3 G, `% }/ n9 J( S! T - "to" => $to_uid,
" J# q3 W6 ^, N. [' ^ - );
+ @2 A$ `0 g6 \ L# [ - $ch = curl_init ();
* |0 e3 A6 ^* r; U* E, x - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
( j( Q8 P1 ?1 O: ?8 }9 M2 x - curl_setopt ( $ch, CURLOPT_POST, 1 );
+ c" C4 T7 U v$ R: D - curl_setopt ( $ch, CURLOPT_HEADER, 0 );
, `+ W' P$ B8 U6 K. Z( a - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
/ |& C. u) m8 V# Z# U0 f% Y1 y - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
/ O* f7 W! `1 H" R - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
9 i* p8 l/ Q! w! i" Y u0 h# ^ - $return = curl_exec ( $ch );
1 O8 O* s' n! X% L - curl_close ( $ch );
0 `6 H+ l7 b6 } - var_export($return);
复制代码
: \+ C4 W" [7 n9 W& i
/ p" {: j# m* ], s
; V0 S0 H3 [, `# z) W' r; W6 v: O" G9 X1 c9 K
1 o: U1 w2 T0 S/ A
本文摘自 https://www.workerman.net/web-sender
1 y: n) Y: a) @& ?+ p
! Y' w: p) n2 ], `& c- ]( f; v0 l* u/ o- ^1 \
7 f; G: R/ `) o4 V3 S0 T* B+ s- V; F% X5 B
1 O' C: n9 g8 [( k- ~8 p
. I8 a$ ^$ m9 B7 r
4 L' X* E, a: @" g% Q, ^
( b# c, i2 V' r" b U O: d! Y1 I& g* X" H8 |& z+ Q
+ q9 k. |8 K z1 R
5 N6 M4 X5 Z4 K% }2 D0 l3 X0 _! ?/ K/ B. o$ w2 J
t; E) X! o1 t9 y7 J
|
|