管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:/ Y" C; f9 D. ^: O: t% d! f
- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
5 ^2 E) E( c& ~* N* A+ j! |
下载WEB消息推送框架
1 I- P# Q$ s" F7 { L' T
' o1 ^" z3 I9 Q7 P4 M% ?: W# q1 f; Q 下载19472次) H& I: Q( r& E4 ~% X# J
: Y' f6 q2 }4 w) ?5 L! k8 b1 _% G- j, }PHPSocket.IO开发手册
1 J. |, `8 T$ f% s; i4 q+ G0 d, @) a
: d4 Y1 s; M; |2 O! r" JPHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content1 C; S6 \% v, s* a% _
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 / }$ s, w" H! k, o4 {
效果2:8 L, @% `3 S* p
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计 4 [8 ]6 f: y1 E/ U8 |
7 o4 A5 j2 a9 m" l/ w, 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
8 X% A1 K' u7 N7 [7 Q. j8 `1 m5 Z
& B9 G6 O) K7 C8 Q$ u9 J" a" C. s' b7 l$ Z* C2 {6 Q# |1 P, T
前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
- u: n, H- ?1 X9 a" f C4 Z - <script>
9 }& V" ^4 \+ [0 F* _5 N6 ] - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip( O- u( b' z' H3 E" ?1 m
- var socket = io('http://workerman.net:2120');
: c ^* ~9 B. | C: n T - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数, V z! m1 E; u) ?
- uid = 123;
& b0 E: e" U7 q/ W+ V9 ~ - // socket连接后以uid登录# c8 B/ y v- v0 O
- socket.on('connect', function(){
6 D" @ R* N+ t" M: \8 j - socket.emit('login', uid);
# u: S7 j+ H* f( t - });
# H) }5 S7 @0 j: S$ S - // 后端推送来消息时
; i* J9 J& l1 l4 d - socket.on('new_msg', function(msg){
% N: T: A/ U2 z5 W. x( a/ X* J* Q - console.log("收到消息:"+msg);
! Z8 N. r! e* ^ - });" m5 _' g" P5 K4 v. W. b& {
- // 后端推送来在线数据时
/ T& Q5 o* x7 o7 V( K2 { - socket.on('update_online_count', function(online_stat){& `( y+ A* B3 U
- console.log(online_stat);
4 g6 X V7 Z+ a) u - });" y$ J$ X- s9 W! H& Z5 z
- </script>
复制代码 后端调用api向任意用户推送:- <?php
: k) ?8 K& Q2 i! O - // 指明给谁推送,为空表示向所有在线用户推送
6 C" q7 k+ u' c8 v! X9 N5 y& K$ c - $to_uid = "";
- E" |3 X& { h2 g$ p0 L0 ~3 O - // 推送的url地址,使用自己的服务器地址0 y! J( d* u: W. H
- $push_api_url = "http://workerman.net:2121/";
& Z+ o- b" E' Z- b2 v - $post_data = array(# a1 F6 ?' l8 T$ O* g( u
- "type" => "publish", @" ~0 B6 q5 n. `( ]
- "content" => "这个是推送的测试数据",( g& G8 V p9 |. K
- "to" => $to_uid, l0 I2 ~+ l1 ]$ j2 A0 a
- );
% _0 `: y9 c4 b/ z+ h& T - $ch = curl_init ();+ `& a8 A6 X' G8 A+ b$ F
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );6 u! c: x! @% a& O# Q5 E
- curl_setopt ( $ch, CURLOPT_POST, 1 );
d& O/ H% p$ Z7 k; c# N# `+ B, ^/ N - curl_setopt ( $ch, CURLOPT_HEADER, 0 );
/ a& ]! j! s. X! d, Q - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );$ g6 S+ M8 N1 X
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
$ `* A5 b) A& {: }* e3 L7 q: {4 I - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
! K0 V6 \$ r) B2 O' C - $return = curl_exec ( $ch );, z) V6 A3 M- X5 n0 h
- curl_close ( $ch );2 ~0 d3 V# L) m
- var_export($return);
复制代码
' Q# h2 V1 \# a% S5 @. A) N. z- [9 m9 D- m
, ?) D1 A( n- d+ Z0 q, H7 M$ }) L
s! m! A" |+ y/ R
$ I2 N8 Z: v6 p$ [8 V: j. i2 T* I本文摘自 https://www.workerman.net/web-sender' [ `6 _0 z$ a. |* v* r
6 j* ]$ e) C# u/ @% I4 u9 Z( w
# h7 `! P Z3 T% K5 V; u
) Y; ^! u9 W* ~+ d A$ k
. U ^5 U5 B4 e, Z* K; O3 o, Z8 u- u' R4 S% G; [/ W; L- o; v
: k. t0 K- Z+ n( S8 z
6 L8 m8 U; C. s- v5 I, y
2 f" F4 \6 S2 y$ Q" Y. a- D
! n2 j' j+ o% ^" j: g: b+ r
+ Z" Q2 S7 X! ~3 R( S u( X, U# e/ `. q: K
* U/ Q) ~3 Y. K$ S2 L
9 g+ Z9 {8 m: K
|
|