管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:5 ?6 r" a5 f$ i- Z5 a
- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
9 |, ]. i0 o) ^/ L' d; d: O, m7 a+ R3 O 下载WEB消息推送框架% Q( t- N% T5 t
6 y0 D; c& S" g
下载19472次3 E: U: ]! T1 G2 Q( v" J
. V) n( }3 D. f) {8 o; d0 _ O
PHPSocket.IO开发手册+ |# w1 L& B4 X; f
$ ^3 _! b0 q, a' o/ W; s4 M$ Q* ?
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content/ C- @1 g: l$ z9 z5 [9 V
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 5 x4 G7 z+ \& v) W* t. t
效果2:. @$ ^; H. J+ P8 p
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
3 y3 R8 ^% H7 r u0 J- R) V% E! R
安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组) 7 E3 o' ^: Y9 C2 Y5 r
* x0 m6 i# M% _6 Q# Q# F0 c# o! O, r; p; y9 q+ E: G
前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
3 s) W8 f1 _# G - <script>
' |3 T3 q* q( f0 q; _. u1 I - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
1 x! i" U: d- z9 d - var socket = io('http://workerman.net:2120');
, n1 V) F1 Z! g. c - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
9 k; _% X2 x& ? - uid = 123;
4 T/ E8 `9 F3 z( I2 Z - // socket连接后以uid登录: t% }* J" j" Y1 S3 H7 c& B
- socket.on('connect', function(){- J# J F! s4 m" p/ `2 t+ o
- socket.emit('login', uid);
* w& d% a z: V* s+ P* t9 A! Z C - });
/ k! x. ~. `, Y* s c - // 后端推送来消息时
8 f6 E5 t! S; F - socket.on('new_msg', function(msg){
. a# W* K" |4 Q0 o$ g5 H/ A# @ - console.log("收到消息:"+msg);
- i" }6 m0 U) _' \# k- Z - });
4 u- U3 n$ Y# }9 Z, W - // 后端推送来在线数据时
% V% ]4 j( \# v$ G8 f. C# ?" u. O - socket.on('update_online_count', function(online_stat){
# d5 }5 m4 N3 ~# V8 c - console.log(online_stat);
5 R3 s+ a: Z) o, b" o, P2 ^. q - });
( D! d+ i6 k. C: }* [ - </script>
复制代码 后端调用api向任意用户推送:- <?php
9 E9 O- t3 ?$ w- n# V - // 指明给谁推送,为空表示向所有在线用户推送
6 E( R5 A! ]2 R2 M" w - $to_uid = "";2 I0 |: s" W5 U& Z% M9 y# j$ d
- // 推送的url地址,使用自己的服务器地址; u+ _, {. N2 a/ p5 F
- $push_api_url = "http://workerman.net:2121/";0 `5 h0 N$ T \. N" s5 N. T' [
- $post_data = array(3 B8 W3 \7 w$ v
- "type" => "publish",; U6 m8 b4 W- J( A$ U K5 Y, l, P
- "content" => "这个是推送的测试数据",
3 b' J. k4 ^9 Z% B# A - "to" => $to_uid, - i9 s( d( g: J
- );
* f* j% W) K; ? - $ch = curl_init ();7 `. s+ p9 K$ D0 J: d
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );+ R6 ?. [, f: ^) b4 E
- curl_setopt ( $ch, CURLOPT_POST, 1 );) W" k% x' C7 c7 O+ M
- curl_setopt ( $ch, CURLOPT_HEADER, 0 );( y. }, ?) g$ [' ~5 {# E0 v1 S
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
, @% g. d3 M% I7 k - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );3 b/ R/ N- B1 ~* [, r! o
- curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));/ d P% B2 r1 E9 y% ?
- $return = curl_exec ( $ch );
: G& Q. X( z4 B/ G+ E- @+ T - curl_close ( $ch );! E6 `6 j9 @5 Q4 W
- var_export($return);
复制代码 3 ^+ t3 F" \' r+ K" V: P9 D0 R
1 e. }; U5 K$ X$ t! g( U! S
+ R; P b$ D4 h- Q0 {. E! B& [! m
$ G7 W5 T: T! C* G
! `7 m$ ~: ~7 C% z* G7 h1 c本文摘自 https://www.workerman.net/web-sender
& ^, D! i8 _" n
) R) d- S, F7 l+ e* |$ J1 V: L4 }0 O
_9 S2 O% Q0 f1 M4 b' ?7 B, ~, }3 q# k3 t) k) ?
/ G: ^7 n+ t( g3 b6 d9 A* D& v
% r& \" ~+ e- {( a5 ^
( S8 v- U: F2 V0 l3 h6 r% d3 o
; X+ e, r; l W6 \6 i P# \1 Z8 E1 m5 S0 u8 p
9 q7 b( D! F: w3 L
) @/ B. w" W: h% h/ Z. K( {5 W+ k' g! f [0 L3 {+ z$ u
+ y! z# ]* N; N. Y- J0 f& D) ~2 f |
|