管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:$ S' p1 X0 K0 `* V
- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
5 D: C- o; K9 h6 u( J
下载WEB消息推送框架
; @* U6 X6 s# w- X: |, `5 D+ N0 b% j& U- U; v+ |8 j
下载19472次
" p! v" l! i% y$ x# P) b
2 e: |$ P+ ]3 @" \- J) \PHPSocket.IO开发手册+ C1 _) S6 g8 {7 }
! P3 V9 `: c% k) v/ i" G) V
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
* o1 M8 U* I7 [$ R0 F其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 5 H6 S: e. S( r- r' Q
效果2:
5 D. \1 ^0 l& ?$ p9 b见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
6 P- Z' e) Q& ?" d
6 f, E( ~; l7 A4 Y/ V" K4 M: }0 m安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
/ G3 Y( x9 _% ^: O
+ S& N- z9 }4 Q! E
4 S1 e: b7 p' U8 O/ ^' v前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
7 _2 v2 b% N, H$ R - <script>
% y# w; K2 H _! H# ]3 E - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip+ c1 h9 t* d6 V, _" [
- var socket = io('http://workerman.net:2120');6 r6 @1 b# l" o" S6 x- e3 \1 k& p
- // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
: r: W; K$ z, S; d( ]" w - uid = 123;3 n; U4 U, t3 I! a
- // socket连接后以uid登录. d% ^8 `) v" ^
- socket.on('connect', function(){
+ U& A9 h+ h$ ]) } - socket.emit('login', uid);& s4 p9 C0 E( c7 g r
- });& D* E) m3 ?+ H1 X k/ F
- // 后端推送来消息时+ X9 M9 ?( D* B( m! V J
- socket.on('new_msg', function(msg){
" v. \! ^& U! |% R8 F0 U$ a: C! E - console.log("收到消息:"+msg);
$ H1 }' U; Q0 [7 z) c4 d/ C - });
- C0 r# z. i+ d, P; S4 K. ?2 M! y- W - // 后端推送来在线数据时
, g* r- _- \; q - socket.on('update_online_count', function(online_stat){) e$ T. o$ E1 y2 u+ X; h; j
- console.log(online_stat);
* ?2 ]- t- K# O& Z) n( t - });9 s- ]3 e( z$ C* i* F
- </script>
复制代码 后端调用api向任意用户推送:- <?php
( K, j* ]$ n. _5 l! N8 ^4 L3 N4 s - // 指明给谁推送,为空表示向所有在线用户推送0 c& V6 L( ?% G7 p) n
- $to_uid = "";
2 h1 @1 a$ x8 O6 x3 \" Q+ m - // 推送的url地址,使用自己的服务器地址
4 B8 H& x1 x+ ]7 ^ z' T$ Z6 _ - $push_api_url = "http://workerman.net:2121/";
7 i+ |6 A( f) A6 G u6 F0 a9 O - $post_data = array(
- a0 s* e6 h; \' J - "type" => "publish",7 B' Z* T4 O3 @& T; E
- "content" => "这个是推送的测试数据",
2 e* B& i. D( @& v0 T - "to" => $to_uid,
' \- |2 k1 j1 Z0 x) w+ s& d - );3 X2 J, c, w; x! O
- $ch = curl_init ();
8 h/ d5 {, t* H: H# @ - curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
4 _& b$ ?5 ?9 l, A- | - curl_setopt ( $ch, CURLOPT_POST, 1 );
1 A9 b" o9 H( B. Y& m9 s - curl_setopt ( $ch, CURLOPT_HEADER, 0 );9 A. C- ]: H0 ?/ o2 q
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );9 t9 A8 X. m6 g( a
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
, e# T$ g+ y4 X8 W4 J4 o - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
- a) R7 ?2 |" F4 X: y - $return = curl_exec ( $ch );
5 E( G: [' r6 j4 Z - curl_close ( $ch );
8 z8 L8 [6 ^; f- W# S0 P: z! B6 w - var_export($return);
复制代码
) P. D/ U& H, p8 l' _ J! c* b7 I. J& p$ ?# K% Z2 i
0 x; ~# {& D# \& ]% {
' @/ E9 l' e$ \: x" S+ x
% D( b' A$ I) G% {3 v* }6 L; e
本文摘自 https://www.workerman.net/web-sender3 o* ?3 q3 q5 c' C
$ x Q0 o' w+ k6 \) L2 r0 U* A3 \- H+ J$ s" F5 D/ L3 m
! S o6 j; |% \9 [& v
; ]0 X$ O! W4 M6 I; H
4 |# F. F" [ ]$ ]) A7 R6 p: i/ C
$ {6 R/ {2 a. N0 h! _% T8 k6 R+ @* Y# y! u
/ h* d$ n! X& H7 Z& ?' }
) p- Y7 S9 P. H3 A/ A9 m4 R4 ]3 c2 J/ T ?
+ o: x: M; J6 H% A3 `
( `6 ^. `7 y) S( v: H, {) g, y. Z" ^' o0 t4 n
|
|