管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
$ c$ ]% ? h, h- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
* {7 \4 [: W$ V7 H0 T
下载WEB消息推送框架
. q. _9 U4 S) ~; ?4 M
" C) I1 `% C1 {3 G$ m' ^& D 下载19472次
$ v i! M8 y. R8 s& P$ D; E+ Z3 {# F! x5 S2 P6 y! {
PHPSocket.IO开发手册
: ^/ t6 O: p; e3 c# l
* ?: I) c! R& Y2 W7 ]PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
! D H9 f( m! U9 j3 X其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
* C3 G; k" R4 y+ P/ F9 L1 a效果2:
, i6 T9 j, ]7 l' N, x' J见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
4 Y& X9 u) |+ y4 ?) u/ ~( I. ]
% l, y4 o1 O$ c* M1 F4 u安装启动首先:参考手册检查/安装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: U8 s- l; t7 m+ R
* v& g. O! ?$ @8 M2 r @+ C
2 w1 \/ r) g- n6 |
前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
9 O- [6 w' P, G4 T7 }9 \: U - <script>
* U; y; ?) }: n& a9 u' i K - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip: A; W3 ~1 a* X& E; `2 b( Z
- var socket = io('http://workerman.net:2120');! k7 T$ u$ s' N" _& {
- // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
& O2 K/ a/ O3 b8 D( _& x* c - uid = 123;% L5 u3 N7 J$ e* B. x1 p
- // socket连接后以uid登录
6 H/ `6 }( U- C( N/ N6 p2 ?: C- u - socket.on('connect', function(){) h/ M! @# o9 U1 Z# i
- socket.emit('login', uid);1 ] Z. W+ K* t: \& @
- });8 G, z, V" o7 |: s4 o4 B
- // 后端推送来消息时
6 p1 x1 p; B+ ]% w) l - socket.on('new_msg', function(msg){8 a4 z: i( |; f- S
- console.log("收到消息:"+msg);# l8 U. L( p* t; f7 ?# g0 v
- });
4 k8 w k H2 l7 x - // 后端推送来在线数据时! a+ W& [( L6 W* p2 Q% s9 }4 T
- socket.on('update_online_count', function(online_stat){, a+ }7 Z/ w- _; i
- console.log(online_stat);
9 h' b3 }) C: \ }& j) u - });. ?8 \) m3 r% i* _$ r3 o0 t- @8 C
- </script>
复制代码 后端调用api向任意用户推送:- <?php
8 z( Y# [: a. ]# \4 }5 W0 w* |, u - // 指明给谁推送,为空表示向所有在线用户推送2 K6 d3 n- g- W$ i
- $to_uid = "";3 b$ j6 r( u; J+ L; u; ]2 q$ b
- // 推送的url地址,使用自己的服务器地址
3 f& H1 e6 L, [) B* W) C - $push_api_url = "http://workerman.net:2121/";: e% ^ K$ ^# z8 j5 K2 z0 `
- $post_data = array(
' ] c$ o( }0 F S' h. p( [( V3 z R1 m( E - "type" => "publish",
' n% D8 o9 S- Q2 f7 p - "content" => "这个是推送的测试数据",
3 X+ o9 u* k d5 B0 E% [ - "to" => $to_uid,
! j2 S1 Y' `- ` - );
7 \) O" I! O& ^3 ^ - $ch = curl_init ();
" E" V4 p2 u: o: S - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
: C: ]' i0 t+ d6 `) Y2 L - curl_setopt ( $ch, CURLOPT_POST, 1 );
3 n, H' U1 A: w: ^: u3 c9 b0 Y - curl_setopt ( $ch, CURLOPT_HEADER, 0 );
' |6 J$ `2 X. M, x1 P8 S( f - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
- C; T1 M% N- ~2 m - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
+ e, H1 J4 s1 g" Q6 s! f - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
; l5 i! x% {- l1 s6 J4 A - $return = curl_exec ( $ch );' m% i2 j+ W/ p0 i+ q9 @
- curl_close ( $ch );7 o" I; n( [' V# a2 U
- var_export($return);
复制代码
& Y j& ^) M) G8 o# H2 |% {6 I7 y- f S: w- x" s* ~8 W/ g
: a: t. `1 L2 ^
$ H6 q" `4 Y( C9 p$ S6 s# h4 S q* O9 G4 r v' l" `
本文摘自 https://www.workerman.net/web-sender( x$ j. ?4 n |& S8 R, C9 L
5 ~$ w" [0 o% b- O, f- R9 e- U& x6 c1 \8 P7 B1 b
9 m) L1 w4 _) C4 y' e; D" x
9 ~$ Q6 X( R* O
% n" Y9 G3 c- l4 D, D$ U! y" |* [4 v0 T9 d0 h; r/ U
' K6 d$ S* Q, }5 O; C6 a
, G3 w6 O3 G; Q2 w6 O5 \% r! F4 B. e l. C% D7 P/ S
" ~# Q' _) Q1 s, t9 s0 L
" F- [, Q; C+ @1 k/ Z% U5 u3 q; f- T6 l8 T. w: w& R9 v" U
4 L7 D& J9 a+ a |
|