cncml手绘网

标题: WEB消息推送框架 [打印本页]

作者: admin    时间: 2018-10-27 14:07
标题: WEB消息推送框架

web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。

特点:4 h% Q6 I) g# ^% q  ?
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    2 C, {( {8 r( O
下载WEB消息推送框架; i& s2 m2 W) D3 _% ?  `' X' s$ e

0 S# f7 U' K! F" @+ w0 h, J0 X
Fork on Github
  
下载ZIP压缩文件
下载19472次
1 ?( |: E: ~' j8 M9 @
( d) N  N% I0 e1 D
PHPSocket.IO开发手册
* p4 ~' {0 p2 f" D9 E1 v

0 X/ j* S' L4 ~9 q
PHPSocket.IO开发手册Demo:效果1:

接收消息页面:http://demos.workerman.net/web-sender/

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
! X& [3 u5 ^0 q( y9 w; g其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


; L# P( D* i$ B, m; v  _4 {效果2:8 t9 c$ c4 e8 W! ]4 ^1 k9 g& @

见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计

& S# z! |9 ]" \# C9 Z6 z# O

3 \$ A# N6 U5 K5 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


$ h; y+ W5 e$ A# ~2 ^


# K; ~; J6 Q3 C. L; H3 a( l# _% o* _) h/ X
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    ; [9 v% C0 x- e
  2. <script>
    , a0 B) _$ f9 P/ ~8 U/ {8 n/ a- L
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    8 G5 V5 O/ h& r0 S
  4.     var socket = io('http://workerman.net:2120');
    7 R! L# v# s" t8 V0 C
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数$ m0 V0 O% [, d2 h* r( v' t* A
  6.     uid = 123;
    6 E+ `9 B- F. i0 M
  7.     // socket连接后以uid登录% v& @" u; R6 f+ Y0 P: r
  8.     socket.on('connect', function(){
    , G% T8 R/ ]6 m% v% E* }& f
  9.             socket.emit('login', uid);
    7 z7 R( o' K6 H; r9 T' v# @
  10.     });
    2 \5 K: q5 s; o" ^+ M
  11.     // 后端推送来消息时! x0 b# d+ k6 s* T* J/ _2 B9 n4 ~
  12.     socket.on('new_msg', function(msg){4 U9 Z) o- c: b0 D
  13.         console.log("收到消息:"+msg);
    6 k- p, R2 G# f' l! z7 ^4 j
  14.     });
    & {# ?7 J: [4 N
  15.     // 后端推送来在线数据时$ j  d: v" i3 }& c8 S
  16.     socket.on('update_online_count', function(online_stat){
    4 w3 Z5 s+ @. ]8 b) Q0 B
  17.         console.log(online_stat);- a2 p6 F, M1 @8 B
  18.     });; S/ @: u! x! ?  q. j
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php: g, o. X8 p7 w+ H- R0 k( |- A5 h
  2. // 指明给谁推送,为空表示向所有在线用户推送
    * |5 d" q0 ?/ K0 K( H
  3. $to_uid = "";
    1 u, O" m" D+ v% s; a3 U5 w
  4. // 推送的url地址,使用自己的服务器地址
    4 w4 n! @# K0 ]% v: }' t
  5. $push_api_url = "http://workerman.net:2121/";/ b! p7 H) p- N, e2 k
  6. $post_data = array(
    ) V, E* D% ?% U/ {
  7.    "type" => "publish",
    - Y* x" r/ r7 a  u1 q+ Z+ o
  8.    "content" => "这个是推送的测试数据",/ i5 r" `) R- @, N
  9.    "to" => $to_uid, : u0 S7 Z- c, Y
  10. );& |& }" c8 C5 f/ T( T  t
  11. $ch = curl_init ();- O+ D# C! d, z1 J. s# n" T( X  T2 q3 p
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    4 K1 c# c; ^+ E" T5 Q  ~
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );( l& S1 m. d! p9 F6 V- T# Q
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );3 I! O- [. Z8 y, U" U! T
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    - ~$ R$ e) f: @% M7 r0 H1 C
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );) O& n) g: L4 @  E) O
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    8 _6 j: f( }7 U2 o. i
  18. $return = curl_exec ( $ch );
    , z( \7 k' e& N7 }. |6 z; n" v
  19. curl_close ( $ch );9 H# [! U: O# I( |2 c6 I( F: U
  20. var_export($return);
复制代码

; Q* r$ N/ l8 {. E  s( M7 I3 i# ^, n

2 k/ x5 U1 I' N8 m8 |# ^' V- j
' n7 E9 D+ q/ D' z- x4 ]1 q
, d# a6 a0 {9 P0 z  c: e
本文摘自 https://www.workerman.net/web-sender
: @$ i4 s1 r/ e( ~5 G, p( ^. n. C# e
' m: ?1 w& g7 k2 k0 ~" E9 ]
) n0 r) T, Z5 W) H; Q3 d5 a* T# O; Z

& D* x( o7 h' R6 z, z# ?" t3 [
# p# h( r  z( A: c- Q( D7 m# _: u5 i8 T4 l0 K
. Y" n3 R8 ]! z/ f5 k4 P" r* T

) a# n/ [3 Y. O0 a- {' n4 j" R2 i
" @* @, {& @7 o
! D! B$ V7 ?7 d; w

* Q4 i6 c6 m& q. |
& @4 ~) @0 k2 `" W




欢迎光临 cncml手绘网 (http://bbs.cncml.com/) Powered by Discuz! X3.2