我正在建立聊天,一切正常。
当人A在textarea中键入消息并单击HTML表单的SEND按钮时,PHP会将其发送到服务器。
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect textarea content
// inserted (appended) to mySQL table.
// collect chat content in mySQL table
// display chat content in a <div>
}
?>
(我不发布PHP代码,因为它与问题无关)
人B获取消息是因为javascript setInterval触发了一个函数,该函数通过AJAX从数据库中获取聊天内容,然后在div中显示人B的聊天内容。
setInterval(refreshChat, 1000);
function refreshChat() {
$.ajax({
url: "http://eyesonpi.com/_/php/chat.php",
type: "post",
success: function(data) {
$("#chatWindow").html(data);
},
error: function() {
$("#chatWindow").prepend("Error");
}
});
}
当我在iPhone上运行IOS 10时,AJAX调用失败。 IOS 10存在AJAX问题。 https://forums.developer.apple.com/thread/64526
我尝试使用普通的Javascript(xmlHttpRequest)和jQuery。
我从我的iPhone尝试了我的托管公司的聊天窗口,他们的聊天工作。我不知道从哪里开始解决方法。 B人如何在没有重新加载页面的情况下从A人那里获取消息?有什么建议吗?
谢谢。
答案 0 :(得分:2)
您可以尝试使用websockets进行聊天。或者是长池技术,它允许在服务器和客户端(浏览器或移动应用程序)之间保持连接。 如果你选择websockets然后你可以尝试在服务器端使用: Workerman或Ratchet。两者都完美无缺。所有现代浏览器本身都支持websocket,或者您可以使用像sockJS这样的流行库来支持跨浏览器。
答案 1 :(得分:0)
尝试将setInterval
替换为setTimeout
行为,否则如果提交下一个请求将会被杀死
setTimeout(refreshChat, 0);
function refreshChat() {
$.ajax({
url: "http://eyesonpi.com/_/php/chat.php",
type: "post",
success: function (data) {
$("#chatWindow").html(data);
},
error: function () {
$("#chatWindow").prepend("Error");
}
}).always(function () {
setTimeout(refreshChat, 1000);
});
}