PHP與反ajax推送,實現的訊息實時推送功能
index.html
<!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);
}
});
//按Enter鍵傳送訊息
$(`#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
<?php
/**
* Created by Loading.
* 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
<?php
/**
* Created by Loading
* 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));
相關文章
- 實時訊息推送整理
- workerman 實現訊息推送
- 實時訊息推送方案-SSE
- Flutter websocket 實現訊息推送FlutterWeb
- PHP基於Redis訊息佇列實現的訊息推送的方法PHPRedis佇列
- 7種 實現web實時訊息推送的方案,7種!Web
- Laravel 實現 Kafka 訊息推送與接收處理LaravelKafka
- 訊息的即時推送——net實現、websocket實現以及socket.io實現Web
- 造輪子之訊息實時推送
- 基於workerman實現的web訊息推送站內信功能Web
- Knative 實戰:基於 Kafka 實現訊息推送Kafka
- workerman做實時訊息推送,用過沒?
- 基於 Hyperf 實現 RabbitMQ + WebSocket 訊息推送MQWeb
- 未讀訊息(小紅點),前端與 RabbitMQ實時訊息推送實踐,賊簡單~前端MQ
- Service Worker學習與實踐(三)——訊息推送
- 在spring boot中訊息推送系統設計與實現Spring Boot
- 小程式訂閱訊息推送(含原始碼)java實現小程式推送,springboo原始碼JavaSpring
- Java實現郵件推送功能Java
- 用 Laravel 自帶訊息模組搭建小程式實時推送訊息Laravel
- 如何實現定時推送?
- WebSocket 實現伺服器訊息推送客戶端Web伺服器客戶端
- 訊息推送平臺的實時數倉?!flink消費kafka訊息入到hiveKafkaHive
- python 實現公眾號模板訊息推送(親測有效)Python
- WebSocket實現服務端推送訊息和聊天會話Web服務端會話
- App如何利用推送訊息有效實現拉新促活?APP
- 使用swoole作為MQTT客戶端並接收實現即時訊息推送MQQT客戶端
- web實時訊息推送方案 - (重要~個人簡歷要引申)Web
- 微信雲託管 WebSocket 實戰:基於模版實現訊息推送Web
- RocksDB 在 vivo 訊息推送系統中的實踐
- iOS使用觀察者模式實現推送訊息模組化iOS模式
- 一個簡單API,一鍵實現多通道訊息推送API
- 5種華為推送樣式,讓您的訊息推送既美觀又實用!
- 淺談iOS和Android後臺實時訊息推送的原理和區別iOSAndroid
- java實現 微信公眾號推送訊息 ,cv 就可執行!!!Java
- 3個步驟輕鬆整合Push Kit,實現App訊息推送APP
- 一起來實現單使用者登入 —— 訊息推送
- 訊息推送背後的思考
- MobPush推送實現解析