我正在尝试使用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变量包含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=""/>
答案 0 :(得分:0)
您应该使用异步请求来“同时”完成所有操作,在您的ajax调用上使用此指令:
async: true,
答案 1 :(得分:0)
你想把一些信息推到约。来自服务器的1000台设备并且您希望使用您在问题中提供的表单和脚本来启动它。但您还必须考虑服务器与设备通信的方式。服务器必须有某种方式才能到达客户端。
一种方法 - 例如,指示客户端每隔N秒轮询服务器以获取新消息。这会产生不必要的流量并加载服务器。
第二种方式 - 在客户端上使用websocket并为此提供服务器端支持。它可能不是那么微不足道,因为它似乎是
还有一种方法 - 使用长轮询。
无论如何 - 必须以某种方式指示设备如何从服务器接收推送消息。