-1

我正在尝试使用 php 脚本将推送通知发送到 android 设备。如果我每次将它发送到一台设备,这工作正常,但我有超过 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 变量包含在选择查询中获取的总行数,即表中的用户总数。

<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

您应该使用异步请求在“同时”进行所有操作,在您的 ajax 调用中使用此指令:

async: true,
于 2013-02-10T14:37:46.730 回答
0

您想将一些消息推送到大约。来自服务器的 1000 台设备。并且您想使用您在问题中提供的表单和脚本来启动此操作。但是您还必须考虑服务器如何与设备通信的方式。您的服务器必须有某种方式可以访问客户端。

一种方法 - 例如,指示您的客户端每 N 秒轮询一次服务器以获取新消息。这会产生不必要的流量并加载服务器。

第二种方式 - 在客户端上使用 websocket 并为此提供服务器端支持。它可能不像看起来那么微不足道

还有一种方法 - 是使用长轮询。

无论如何-必须以某种方式指示设备如何从服务器接收推送消息。

于 2013-02-10T14:46:57.367 回答