我正在用 Laravel 5.0 编写一个拍卖网站,它使用每 5 秒执行一次的 AJAX 轮询器来模拟实时更新。问题是我的服务器返回零星的 HTTP 401 状态。
我的路线是这样构建的:
Route::post(auction/live/update, 'AuctionController@ajaxSendUpdate');
我的控制器是这样的:
public function ajaxSendUpdate() {
// Business logic: queries database, couple of Ifs, etc…
$data = array('success' => true, 'otherStuff' => $myData);
return Response::json($data);
}
最后我的轮询器是这样设置的:
// a bit of HTML
function getAuctionUpdate() {
setTimeout(function () {
$.ajax({
type: "POST",
url: "{!! url('auction/live/update')!!}",
dataType: 'json',
data: {
auctionID: $('#auctionID').val()
},
success: function (data) {
if (data['success']) {
// Updates some labels, etc.
getAuctionUpdate(); // Rearms itself
}
}
} }); // Not sure if all brackets are correct in this snippet but they are 100% on real code
}, 5000);
这段代码运行良好大约 95% 的时间。然而,它可能会出现两种不同的结果:
1)服务器在一段时间后响应错误 401 并且永远不会恢复。在这种情况下,我们需要再次登录。登录后,一切顺利,再也不会出现这种结果。
2) 服务器以零星的 401 响应,但在下一个(或几次)轮询请求中恢复。
我在 Windows 上使用 Laravel 5.0 和最新版本的 Xampp。在 Windows 上使用 WAMP 很容易重现该错误。未在 Linux 或 OSX 中测试。我已经在 laracasts.com 和其他论坛中阅读了这个和这个以及各种主题,但我无法解决这个问题......