首頁 > 後端開發 > php教程 > PHP基於反ajax推播實現訊息即時推播步驟詳解

PHP基於反ajax推播實現訊息即時推播步驟詳解

php中世界最好的语言
發布: 2023-03-26 12:56:01
原創
1639 人瀏覽過

這次帶給大家PHP基於反ajax推送實現訊息即時推播步驟詳解,PHP基於反ajax推送實現訊息即時推送的注意事項有哪些,以下是實戰案例,一起來看一下。

入口檔案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>

  <p class="content_box" id="content_box_title" style="border: none;">消息框</p>

  <p class="content_box" id="content_box">

  </p>

  <p 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>

  </p>

  <p class="error_tip" id="error_tip" style="color: red;">

  </p>

  <script>

    $(function(){

      //发送消息

      $('#btn_send').click(function(){

        var send_text = $('#send_text').val();

        if(send_text.length <= 0){

          $(&#39;#error_tip&#39;).html(&#39;不能输入空值&#39;);

        }else{

          send(send_text);

        }

      });

      //按回车键发送消息

      $(&#39;#send_text&#39;).on(&#39;keyup&#39;,function(e){

        if(e.keyCode == 13){

          $(&#39;#btn_send&#39;).trigger(&#39;click&#39;);

        }

      });

      //建立通讯链接

      $(&#39;#btn_link&#39;).click(function(){

        connect();

        var _this = $(this);

        _this.attr(&#39;disabled&#39;,true);

        _this.html(&#39;已连接&#39;);

      });

    });

    //建立通讯连接函数

    function connect(){

      $(&#39;#content_box_title&#39;).html($(&#39;#username&#39;).val()+&#39;的消息窗口&#39;);

      $.ajax({

        data:{&#39;user&#39;:$(&#39;#username&#39;).val()},

        url:&#39;ajaxPush.PHP&#39;,

        type:&#39;get&#39;,

        timeout:0,

        dataType:&#39;json&#39;,

        success:function(data){

          $(&#39;#content_box&#39;).append(&#39;<p class="require">'+data.msg+'</p>');

          connect();

        }

      });

    }

    //发送消息函数

    function send(massege){

      var user =$('#username').val();

      $.getJSON('write.php',{'msg':massege,'user':user},function(data){

        if(data.sf){

          $('#content_box').append('<p class="send">'+massege+'</p>');

          $('#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: 2015/4/18 13:13

 * function:

 */

$filename = dirname(FILE).&#39;/data.txt&#39;;

$isread_file = dirname(FILE).&#39;/isread.txt&#39;;

$user = dirname(FILE).&#39;/user.txt&#39;;

//写入消息,消息未读,谁发送的消息

file_put_contents($filename,$_GET[&#39;msg&#39;]);

file_put_contents($isread_file,&#39;0&#39;);

file_put_contents($user,$_GET[&#39;user&#39;]);

echo json_encode(array(&#39;sf&#39;=>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: 2015/4/18 13:12

 * function:

 */

$filename = dirname(FILE).&#39;/data.txt&#39;;

$isread_file = dirname(FILE).&#39;/isread.txt&#39;;

$userfile = dirname(FILE).&#39;/user.txt&#39;;

$get_user = $_GET[&#39;user&#39;] == &#39;1&#39;?&#39;2&#39;:&#39;1&#39;;

$msg=&#39;&#39;;

while(1){

  $msg = file_get_contents($filename);

  $isread = file_get_contents($isread_file);

  $user = file_get_contents($userfile);

  //是对方发送的消息,设置消息已读,退出循环。

  if($isread == &#39;0&#39; && $get_user == $user){

    file_put_contents($isread_file,&#39;1&#39;);

    break;

  }

  sleep(1);

}

echo json_encode(array(&#39;msg&#39;=>$msg));

登入後複製

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

PHP開發api介面安全驗證步驟詳解

#PHP進位相互轉換計算實作步驟

以上是PHP基於反ajax推播實現訊息即時推播步驟詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板