管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
2 H, H! h$ k' V) B& M$ i7 }- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
6 A4 l z( t, }! d4 C' p
下载WEB消息推送框架
, ~# i0 \/ B$ O* h% u! x0 m4 X
1 ?; ~# s; U2 s% `: P 下载19472次
& v% ]. j) b! m# ~- ?$ Z2 c& \1 L' }( b# E+ F, g. M
PHPSocket.IO开发手册
( a) S% w6 q& l6 v* _3 F# ? C7 p! d, {& a, r4 G3 J* H) q0 {
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content. y* @( y, b) [7 A Z
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
@5 j' m: x! |7 E7 a( z1 @效果2:
+ w% [0 x$ v; \见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
+ _4 Y6 w3 W8 X0 ~
) M# H7 }$ m9 U l; z# }安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组) - _5 C. w( v. P2 \: o x( X
; N, H4 [8 @8 s7 J% L. m
7 d+ _/ W0 ^5 R. y# Q/ d前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
1 @2 ^/ c/ ~ W1 ? - <script>, g& a0 w9 ^ \. ?* q
- // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip) w: J, A/ ^% i7 u# V! }3 y
- var socket = io('http://workerman.net:2120');( K( ?+ V" x+ A0 [6 f
- // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数) \0 L$ B4 l7 Y
- uid = 123;
& @: T' u4 i* [6 G- F; x3 g - // socket连接后以uid登录
! y2 K) g- P4 e5 e# } - socket.on('connect', function(){3 N5 L' ?2 W8 y0 o
- socket.emit('login', uid);5 i5 a" q% o, R5 y% N# X
- });
" j8 {! {! D) V3 Z" D - // 后端推送来消息时
( t2 Z2 D/ d) B& U8 |) x0 f - socket.on('new_msg', function(msg){
! P* ]$ J! c) x, x+ U+ e - console.log("收到消息:"+msg);- V9 @! i# Z; k. [! J$ l- J4 u
- });
) o1 i4 i4 ]9 Z$ B - // 后端推送来在线数据时. z) U9 Z \& r
- socket.on('update_online_count', function(online_stat){9 u/ V, j; Z2 I3 j; Q' A
- console.log(online_stat);
$ b1 `) Y9 x( f# P7 l; n: X - });
3 B$ H7 e# @1 Q/ \+ H - </script>
复制代码 后端调用api向任意用户推送:- <?php
9 F1 I! ]+ G2 x/ T( q' Q0 V - // 指明给谁推送,为空表示向所有在线用户推送( X0 t2 L+ v+ u$ l
- $to_uid = "";
1 y& N3 k" D! `+ D6 g/ v4 j - // 推送的url地址,使用自己的服务器地址
0 z, j( s: T% A! c4 V* K - $push_api_url = "http://workerman.net:2121/";
4 C Z& x9 k/ \2 c, h - $post_data = array(
1 f: h* t. j" C |% ^/ ^& ? - "type" => "publish",6 F8 f0 @) H/ R
- "content" => "这个是推送的测试数据",2 a h* v. g1 @
- "to" => $to_uid, 0 [/ A) }4 t/ q# a( Q- w, h
- );7 F o' @) @, J" |0 P! \
- $ch = curl_init ();
+ J6 [6 @& a5 w6 _2 O - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );6 N% V+ o- e9 F0 `
- curl_setopt ( $ch, CURLOPT_POST, 1 );
1 I$ ]8 q. t! O: X! g - curl_setopt ( $ch, CURLOPT_HEADER, 0 );1 \& b8 Z+ C8 ~0 G
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
, f5 e& e3 R& j: c; p$ u - curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );0 i. i9 K1 k7 A* J# I0 r
- curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
2 @ D, I: j& {$ x! ?8 t& o - $return = curl_exec ( $ch );/ S: N( U C" R6 G+ C- U% r8 V( I3 S$ N
- curl_close ( $ch );$ i N1 b5 d* n- Q
- var_export($return);
复制代码 - r. ?$ ^# d; k
+ A+ B6 `2 a3 d9 y5 [; a) h
/ b* f7 X0 U$ T @" e" h [- [5 ?- x! C* G6 K
; y8 Q6 L0 N% c; H3 p( |本文摘自 https://www.workerman.net/web-sender% M* {( ], x/ M4 w5 V; O; n5 t8 g; q; ^
3 o) i) b4 I# U$ b( q
8 \+ y* G. y( m& `
- n2 C! L% a$ l) g( H( R2 {6 O9 | F3 y4 C
4 Q2 s& H. p: U/ ^; E! w; O, V
# q% s+ M4 X1 T
; Y# B4 c' i4 G4 g/ ?7 ^& g% @' {" @
0 ~3 V0 }. b _8 H9 @ _
: L1 \3 b( k# [7 J. k" |8 ]" Z! ?; ?9 e5 i5 z; I1 t& x4 `
9 G( V4 W( w* q8 }" G. Q! e
+ f, D8 a* e$ J( o9 `; J5 H+ w" t, O: ^$ E6 l
|
|