管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
9 Z, F0 y% c. u$ u8 a2 g6 G' \. @- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
! M/ G+ \2 B6 w7 G
下载WEB消息推送框架" }* ~4 [4 ?2 h8 H: V4 ^& I
* D" U5 E: |1 x4 D- e+ l, O, w0 S 下载19472次3 V' o( ~2 U: ]' G, R
$ z- Y- N' s) ^. K
PHPSocket.IO开发手册1 L8 N) b& q0 e: C/ I
' R: N' L* ?; B* s4 s4 R* W
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content$ B. u) d2 n( q
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 / n2 m% f) p$ z5 j" h
效果2:) n" d' _3 x; _
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计 8 e' d& W9 o: |6 E1 Q- P' I
$ G6 @0 m1 K8 }( E( O0 m3 b" k
安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
! e3 L! z4 M1 P' I, }2 X
/ _* y% y2 ^, ^( E0 z. G
9 h' v- G4 z" t) J前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
$ D6 {% R, H4 T; w9 n - <script>
9 i% D: ~% p( T ^5 A8 y - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
# `$ F) h# B5 f9 R6 I - var socket = io('http://workerman.net:2120');
* F% v: Q6 D/ f* s$ @" q4 W - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
% [! Z6 F7 X, i* ^1 U4 i - uid = 123;" i8 Y3 I/ E; \4 N# ^
- // socket连接后以uid登录
) X( b7 g# y8 F, S - socket.on('connect', function(){
' o' g8 m' V; F u9 q8 T - socket.emit('login', uid);, \9 z; x9 A. Q& D- a
- });; w0 r+ B# Z5 V- U) ?% ]0 c% K" `
- // 后端推送来消息时
* f, ~( b3 t) W+ U$ M. V. _4 N - socket.on('new_msg', function(msg){
& y0 {9 W |% Q. o$ [" B - console.log("收到消息:"+msg);
5 d0 I# }$ O7 { | - });4 v5 V" B0 g- T$ o9 r1 D
- // 后端推送来在线数据时' T! H1 j$ B: J6 }7 p
- socket.on('update_online_count', function(online_stat){
. c* j+ X4 h% l6 W: D( u1 h- v - console.log(online_stat);
7 z9 Q' Q! P( }. F5 s - });
8 }! i( q7 Z9 t& n, t, V - </script>
复制代码 后端调用api向任意用户推送:- <?php
1 S4 ]: q }# q& x; Y: K - // 指明给谁推送,为空表示向所有在线用户推送
8 J. i8 W# L0 Z7 Q# A6 U ^/ O5 l - $to_uid = "";
- E- {- |; X, h! Z& y% s - // 推送的url地址,使用自己的服务器地址! y$ Z8 F6 `. z: q" E
- $push_api_url = "http://workerman.net:2121/";
' d3 Z: f* c- p, _ - $post_data = array(0 `9 D5 h; k5 {# r3 K
- "type" => "publish",) M4 {% @8 Y0 T
- "content" => "这个是推送的测试数据",) Z8 A6 s5 ]4 u2 O/ r0 ] k6 F& X
- "to" => $to_uid,
: E$ S5 O3 }: L+ s8 z5 N3 W( D L5 k - );$ \) e* K; |" q1 o. ?2 L d) B& z9 T7 A
- $ch = curl_init ();, O% K+ K& G0 D- f
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
0 N! m* Z& W$ l- Y# Z - curl_setopt ( $ch, CURLOPT_POST, 1 );
; I2 f, |+ @, e3 _2 x - curl_setopt ( $ch, CURLOPT_HEADER, 0 );
- C: W" @+ C" M5 Q1 x( y - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
5 G) ~$ ~7 B Y) N; a* g - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );* R6 g5 V& E( Y: I. H9 J
- curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
/ p# `) F7 w! c: H H5 c1 P* p - $return = curl_exec ( $ch );/ `- n+ j* q, q( Q+ A% m- U% b
- curl_close ( $ch );
. W$ R: D/ j% O$ [& a* z1 I - var_export($return);
复制代码 9 u% G# `/ M- r7 C- ~# w1 `" v
, i5 Z% X% [0 |9 O* f' a6 y A8 N! r7 ?- Q& [7 j1 N
* s1 a5 }# X+ V. J& w ^& V1 u6 b0 ^+ Y! B5 a4 V2 F; n( r
本文摘自 https://www.workerman.net/web-sender& o" Q+ ^: r& F2 P4 L+ c
+ [6 y9 E. R4 X$ k- w) H* e! S5 A! W6 ]6 b
# ?5 w i4 o* H! n5 G9 g: o2 u
$ ^. x4 X. v5 A; [3 l/ ~ V
# ]; I/ [# f( M" {1 y! v K, x+ `% W ]
# @7 _) M3 T2 |3 k. ]* A: I, ?
0 H. A( `6 W, X+ {( t: t; S" b7 g1 W$ \' G" N7 y5 L) j! a
* E( Z7 ~3 ]8 d# P; c
6 K' w i; P2 t, `/ B) j' I0 g5 v3 h! ^) k/ e
0 w, X/ i# C$ I" J* f6 Q2 }. b1 Y! }8 n
|
|