我有两个页面来测试实时通信:“client1”和“client2”。两个页面每隔500毫秒运行不同的ajax调用(动作)和相同的代码。
<script type="text/javascript">
var urlBase = "<?php echo Request::root(); ?>"
$(function(){
function requestData1() {
$.ajax({
url: urlBase + '/session/ajaxData1',
success: function(point) {
setTimeout(requestData1, 500);
},
cache: false
});
}
requestData1();
});
</script>
在我的控制器中,我只是将数据传递给redis。
public function ajaxData1()
{
header("Content-type: text/json");
$x = time() * 1000;
$y = rand(0, 100);
$ret = array($x, $y);
$redis = LRedis::connection();
$arrayJson = array();
array_push($arrayJson, array('"user"' => 'user2') + array('"data"' => $ret));
$redis->publish('message1', json_encode($arrayJson));
}
一段时间后,Laravel自动退出我。如果我将setTimeout设置为2000,一切正常。为什么会这样?当我从真实来源(设备)获取数据时它会是一样的吗?
答案 0 :(得分:1)
解决此问题的解决方案是使用数据库会话存储。
http://laravel.com/docs/4.2/session#database-sessions
我从未进行过一次强制退出,尽管我之后没有花时间进一步调查原始问题。生命太短暂了。
答案 1 :(得分:1)
有时会发生 csrf令牌。你必须使用post方法传递csrf标记。
请参阅示例以解决与令牌相关的问题。
ajax: {
url: '{{url("registration/get-list")}}',
method: 'POST',
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
}
},