管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:- N" Z7 m* X* i# t9 p- c" j4 O
- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
' u1 E8 c! U! w& n
下载WEB消息推送框架
+ C' _( }8 E/ X6 C1 [; Z5 A: P# D, K( F" \4 i6 u: w) @
下载19472次/ r/ m M; O" F; o& y) {4 S$ q0 u4 P
3 `, ?5 e0 ~- V
PHPSocket.IO开发手册* O! q' E/ J+ W" R# Z
9 u, q8 Y2 |6 \( S) f( o3 CPHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
+ z; [) z a7 _8 b( R其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
4 Z% V) v+ `- a' ?5 v效果2:& S! I$ S6 o @0 n, Y7 }
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
& e! [6 ] i. @( f
$ G/ v2 r$ z% j6 A5 p0 n安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
% |9 z9 C2 {3 z
3 s$ g1 g0 ~- k# J6 X- `- g1 S& a- z& d- p4 t; |: ^2 Z7 o, \
前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>. `. g! n, Q1 {9 M8 Z
- <script>
# H1 {% z% J5 O3 }+ A - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
5 b2 L7 c3 w/ l - var socket = io('http://workerman.net:2120');
, y! d1 W1 Y, r8 A! G, @ - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
" f4 |1 o: _* e% v; y- i - uid = 123;9 x, l. a; [# ~# g! C
- // socket连接后以uid登录/ ]. a! W- `0 L; W4 D
- socket.on('connect', function(){
; C0 S2 Q; e4 e U* o; y0 n* @. Z - socket.emit('login', uid);2 S2 s" C' d$ ]+ U$ |/ k
- });0 r: {7 e+ x" g9 E' a n- ?8 ?
- // 后端推送来消息时
: l4 U2 K5 D; R6 Z) U - socket.on('new_msg', function(msg){" C: |5 e6 Y7 Z# b4 t
- console.log("收到消息:"+msg);
" Z* ?# K% n3 o4 F5 h - });& l" F4 Q: x6 j7 e
- // 后端推送来在线数据时
+ A, M. C* A1 L! z f6 T - socket.on('update_online_count', function(online_stat){
4 l+ F! d% I4 |# p* @9 \ - console.log(online_stat);
! d1 x" I6 ~, N% U- u% ?* M: P - });
+ ?8 n" u5 Z7 }+ Y' O$ L, G1 h1 p% F/ j - </script>
复制代码 后端调用api向任意用户推送:- <?php! {4 ]) c- m2 ^7 U
- // 指明给谁推送,为空表示向所有在线用户推送
% u# P9 X0 V7 x* b9 J - $to_uid = "";# Z" z3 \% Z# ^8 d
- // 推送的url地址,使用自己的服务器地址- v* r0 T* c" b; E* r) F; J
- $push_api_url = "http://workerman.net:2121/";
$ j9 _# E4 y- s G w - $post_data = array(0 h% q: @" `4 Y& F8 l# b# l
- "type" => "publish",
0 L7 U( {8 r9 R" |# R, d9 ? - "content" => "这个是推送的测试数据",5 m5 m9 x! J, j# r
- "to" => $to_uid,
3 ]9 V& w) i4 g( B' m% ` - );
% A. ?! u( {( P% j2 S: L. \) c/ g" I. D - $ch = curl_init ();
Q4 s1 [# z4 z, p - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
6 h# ]. Y- J: a% W - curl_setopt ( $ch, CURLOPT_POST, 1 );- o7 y9 F4 r3 S
- curl_setopt ( $ch, CURLOPT_HEADER, 0 );. O- B! D- P |' g% ^) b
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );2 G. }/ k% X, O- r7 I7 T( K& d2 `
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );8 d0 N6 I$ x ~* v9 N# {$ s, [- U
- curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));" Q1 P/ A! M' r1 i2 e# U; x, }/ G& w
- $return = curl_exec ( $ch );
$ ^, U4 f9 g$ [9 j( t - curl_close ( $ch );6 G. {8 C2 f+ t3 v5 h, x! n& l$ a
- var_export($return);
复制代码
4 s6 @* K- A: G. J0 y2 n# ]8 Z& h7 U! U K
( g+ L9 d5 S; V
7 O( G5 P: J0 f' A/ }* Y8 z n5 a) z
& a# t1 t6 [+ C# n0 x+ D: e9 E; J本文摘自 https://www.workerman.net/web-sender
7 e' a8 K8 m; C y0 ]2 t0 [( G. B* K2 z
+ A" x: X9 F" V: m `. F
+ y: y& |1 x( ^4 l& Z. z1 m' G0 D/ U. N
2 g7 a" Q5 c8 H$ ^* v0 r
/ q8 U* V. \4 C; Y2 O) i
8 s( N( \# r4 Y, W% p0 c) g" H: K
. H" P+ d2 Q, T
( l0 O F7 h0 L# h" m! B- O: Q2 p4 J6 Q/ R% g3 C
! T; J+ ^1 U+ t& a( [1 o
9 D6 F, t" H1 b7 g
& C) g8 f( }) r5 `) }% k |
|