-1

PHPスクリプトを使用してAndroidデバイスにプッシュ通知を送信しようとしています。これは、毎回1つのデバイスに送信する場合は正常に機能しますが、1000を超えるデバイスがあり、一度にすべてのデバイスに送信したいと考えています。ループを使ってみましたが、うまくいきません。

<script type="text/javascript"> 
            $(document).ready(function(){ 

            }); 

            function sendToAll(totalUsers){

                for(var i=0;i<totalUsers;i++)
                {
                    sendPushNotification(i);
                }

            }
            function sendPushNotification(id){ 
                var data = $('form#1').serialize(); 
                $('form#1').unbind('submit'); 
                $.ajax({ 
                    url: "send_message.php", 
                    type: 'GET', 
                    data: data, 
                    beforeSend: function() { 

                    }, 
                    success: function(data, textStatus, xhr) { 
                          $('.txt_message').val("");
                          $('.txt_excerpt').val("");    
                    }, 
                    error: function(xhr, textStatus, errorThrown) { 

                    } 
                }); 
                return false; 
            } 
        </script> 

これは私のHTMLフォームです。$ no_of_users変数には、selectクエリでフェッチされた行の総数、つまりテーブル内のユーザーの総数が含まれます。

<form id="1" name="" method="post" onsubmit="return sendToAll('<?php echo $no_of_users; ?>')"> 
                                <label>Send Message to All the Users</label> 
                                <div class="clear"></div> 
                                <div class="send_container"> 
                                    <textarea rows="3" name="excerpt" cols="10" class="txt_excerpt" placeholder="Type excerpt here"></textarea>
                                    <textarea rows="3" name="message" cols="25" class="txt_message" placeholder="Type message here"></textarea> 

                                    <input type="submit" class="send_btn" value="Send" onclick=""/> 
4

2 に答える 2

0

いくつかのメッセージを約にプッシュしたい。サーバーから 1000 台のデバイス。そして、質問で提示したフォームとスクリプトでこれを開始したいと考えています。ただし、サーバーがデバイスと通信する方法についても考慮する必要があります。サーバーがクライアントに到達するための何らかの方法が必要です。

1 つの方法 - たとえば、N 秒ごとに新しいメッセージについてサーバーをポーリングするようにクライアントに指示します。これにより、不要なトラフィックが生成され、サーバーに負荷がかかります。

2 番目の方法 - クライアントで websocket を使用し、これをサーバー側でサポートする。それはそう見えるほど些細なことではない

もう 1 つの方法は、ロング ポーリングを使用することです。

とにかく - デバイスは、サーバーからプッシュ メッセージを受信する方法を何らかの方法で指示する必要があります。

于 2013-02-10T14:46:57.367 に答える
0

非同期要求を使用してすべてを「同時に」作成する必要があります。ajax 呼び出しで次の命令を使用します。

async: true,
于 2013-02-10T14:37:46.730 に答える