PHP实现长轮询消息实时推送功能代码实例讲解
吾爱主题
阅读:166
2021-11-05 17:57:00
评论:0
本文实例讲述了PHP实现的消息实时推送功能。分享给大家供大家参考,具体如下:
入口文件index.html
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | <!DOCTYPE HTML> <html> <head> <title>反ajax推送</title> <style> .send{color:#555;text-align: left;} . require {color:blue;text-align: right;} .content_box{text-align: center;margin: 20px; border: 1px solid #ddd;padding: 20px;} </style> <script src= "http://code.jQuery.com/jquery-1.11.2.min.js" ></script> </head> <body> <div class = "content_box" id= "content_box_title" style= "border: none;" >消息框</div> <div class = "content_box" id= "content_box" > </div> <div style= "width: 450px;margin: 0 auto;" > <select id= "username" style= "font-size: 20px;" > <option value= "1" selected= "selected" >1</option> <option value= "2" >2</option> </select> <input type= "text" style= "font-size: 20px;" value= "" id= "send_text" > <button id= "btn_send" style= "font-size: 20px;" >发送</button> <button id= "btn_link" style= "font-size: 20px" >连接</button> </div> <div class = "error_tip" id= "error_tip" style= "color: red;" > </div> <script> $( function (){ //发送消息 $( '#btn_send' ).click( function (){ var send_text = $( '#send_text' ).val(); if (send_text.length <= 0){ $( '#error_tip' ).html( '不能输入空值' ); } else { send(send_text); } }); //按回车键发送消息 $( '#send_text' ).on( 'keyup' , function (e){ if (e.keyCode == 13){ $( '#btn_send' ).trigger( 'click' ); } }); //建立通讯链接 $( '#btn_link' ).click( function (){ connect(); var _this = $(this); _this.attr( 'disabled' ,true); _this.html( '已连接' ); }); }); //建立通讯连接函数 function connect(){ $( '#content_box_title' ).html($( '#username' ).val()+ '的消息窗口' ); $.ajax({ data:{ 'user' :$( '#username' ).val()}, url: 'ajaxPush.PHP' , type: 'get' , timeout:0, dataType: 'json' , success: function (data){ $( '#content_box' ).append( '<div class="require">' +data.msg+ '</div>' ); connect(); } }); } //发送消息函数 function send(massege){ var user =$( '#username' ).val(); $.getJSON( 'write.php' ,{ 'msg' :massege, 'user' :user}, function (data){ if (data.sf){ $( '#content_box' ).append( '<div class="send">' +massege+ '</div>' ); $( '#send_text' ).val( '' ); } else { $( '#error_tip' ).html( '输入保存错误!' ); } }); } </script> </body> </html> |
ajax处理输入 write.php
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php /** * Created by TXM. * Time: 2017/4/18 13:13 * function: */ $filename = dirname( __FILE__ ). '/data.txt' ; $isread_file = dirname( __FILE__ ). '/isread.txt' ; $user = dirname( __FILE__ ). '/user.txt' ; //写入消息,消息未读,谁发送的消息 file_put_contents ( $filename , $_GET [ 'msg' ]); file_put_contents ( $isread_file , '0' ); file_put_contents ( $user , $_GET [ 'user' ]); echo json_encode( array ( 'sf' =>true)); |
长轮询推送 ajaxPush.php
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php /** * Created by TXM. * Time: 2017/4/18 13:12 * function: */ $filename = dirname( __FILE__ ). '/data.txt' ; $isread_file = dirname( __FILE__ ). '/isread.txt' ; $userfile = dirname( __FILE__ ). '/user.txt' ; $get_user = $_GET [ 'user' ] == '1' ? '2' : '1' ; $msg = '' ; while (1){ $msg = file_get_contents ( $filename ); $isread = file_get_contents ( $isread_file ); $user = file_get_contents ( $userfile ); //是对方发送的消息,设置消息已读,退出循环。 if ( $isread == '0' && $get_user == $user ){ file_put_contents ( $isread_file , '1' ); break ; } sleep(1); } echo json_encode( array ( 'msg' => $msg )); |
到此这篇关于PHP实现长轮询消息实时推送功能代码实例讲解的文章就介绍到这了,更多相关PHP实现长轮询消息实时推送内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/liuxingjiaoyuC/article/details/112977816
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。