管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
" w/ ^- z8 n3 Q& e& _- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
$ D. a: r0 ?( W6 y. u* L
下载WEB消息推送框架" i1 Z+ }: `: w q
; S9 H# t! n1 w1 `( o& X' C$ Q 下载19472次
, l" s& X- H! Y' F; [4 ]0 X/ ?+ f' ?( q, W$ q" `- E
PHPSocket.IO开发手册
3 u- t* s: m5 P1 {4 s3 ?
3 a: E' C6 J: v; n% pPHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
9 Q; o/ M* i* P! _& }其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 6 Z: L0 [' y$ A5 C& s" R1 c/ F
效果2:
6 L0 f1 \) n: W% ?8 I见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
) `& |# r% H6 Q9 \/ z0 r9 ~9 K W7 J8 J, K- f$ A
安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
" b1 a0 H: e' ^4 G3 l" Q
. Y" e, y, K/ R) o. Q
: L+ @8 @* J2 c. n' Y" }: Q前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
/ \) B, ]) F/ G* _( {5 I( S8 o) y - <script>7 d/ d# A- C7 o
- // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip5 Z* w8 a6 K1 `' ?2 b
- var socket = io('http://workerman.net:2120');
# ~2 J+ g! f7 x0 r - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数; Y9 p0 q7 h& \) z# V5 E0 [ {& h
- uid = 123;. |8 K5 T9 r4 e+ u* E
- // socket连接后以uid登录
8 j2 V/ u* _; ~ - socket.on('connect', function(){
2 z9 O! a1 v5 r# F! x - socket.emit('login', uid);
/ A0 v Q& a/ u/ m& N - });0 W x3 a1 R1 w6 Z/ |
- // 后端推送来消息时
- |' G6 c3 y2 V! ^* l8 d! r! W - socket.on('new_msg', function(msg){
2 j5 k4 G- U5 X' n - console.log("收到消息:"+msg);9 ^3 q% ~$ j W& D% [& K
- });
/ e( l, {, X9 @ p; H - // 后端推送来在线数据时$ g1 M4 Y7 x1 K3 \. K) v+ u' Y% f
- socket.on('update_online_count', function(online_stat){
! L7 f* c% C8 Y. p4 |1 Z7 n+ i/ | - console.log(online_stat);
+ x+ \& I' h' D9 q( a - });$ \: l q9 m$ ?) y$ n5 R
- </script>
复制代码 后端调用api向任意用户推送:- <?php
; {( E Y: L8 Z3 c* M0 W% d! Z$ E! q - // 指明给谁推送,为空表示向所有在线用户推送
5 c4 \/ W" Z: U! Z5 q! H" X, J& p) y% ~ - $to_uid = "";7 q0 E) V8 D* q1 H1 m
- // 推送的url地址,使用自己的服务器地址6 C" S* S ~" O; n$ Q. x: A! l7 ]
- $push_api_url = "http://workerman.net:2121/";
! W+ R$ a7 O. ^: O$ ~! t: o - $post_data = array(( s9 z% N: ]1 f
- "type" => "publish",
1 B0 f- q( N0 F - "content" => "这个是推送的测试数据",
* @- u+ m( D: ~/ q - "to" => $to_uid, # H4 `2 m1 N+ f0 k/ N! P' _
- );9 }! R4 X& b& r$ a C) G8 J6 J }
- $ch = curl_init ();( O9 Q1 y; S4 X9 d! F' b
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
$ V% V" j% H, A! r' W6 w; r - curl_setopt ( $ch, CURLOPT_POST, 1 );6 F+ n! U6 P1 O! t6 C% M
- curl_setopt ( $ch, CURLOPT_HEADER, 0 ); X3 Z: o- s+ g' C
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );8 G) j( x: j! H, K
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
5 R! o& [# G" v% u - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));9 U, H0 C8 G" L b( c9 F( _6 ?: e
- $return = curl_exec ( $ch );& `2 O8 k- i. @% E( {% m) q
- curl_close ( $ch );
( Z! g; k1 B1 e- x. `# B - var_export($return);
复制代码
3 K% t' A! ^8 {+ z( J! w- [+ W) |9 v# `2 D1 l: J" j
" ]6 [$ i9 B) y; V7 x* H! T7 D) N/ Y0 l4 n* E
/ T! x3 K6 I. v) e
本文摘自 https://www.workerman.net/web-sender' U/ j; _9 \: k* e( x+ F$ m8 Q
! d! Y3 {! ^9 Q* U
* X% o- a" T$ B( Z w; T/ k1 Q2 }# n o2 L0 @
1 M5 o% U, {* g! S: \) v( L
3 b4 V4 x, m6 L- g% h! G( |9 r0 ~" h8 k9 y. e
2 v0 ~' ^$ {& U# l" D1 | z$ t
. F7 z4 e1 n7 N, B# L$ H
( s) q, U& a" N* |7 } Y* \" d. a1 _- \# N% a# k' @
7 L+ F4 ~* q A; z& Z
. ?4 |! |" [3 L0 T
' X+ J; g# c6 w+ C |
|