如何让一个会话刷新另一个会话?假设我们有智能手机,服务器和笔记本电脑。笔记本电脑与服务器有当前会话,然后智能手机对服务器进行HTTP POST,现在我们希望此事件在笔记本电脑的会话中触发刷新。
答案 0 :(得分:0)
您的问题不是很清楚您的问题的具体细节,但假设您在电话和笔记本电脑上以用户X(并且您的用户实体有一个字段可以获取每次更新的时间戳,例如:updated_at),并且手机会更改用户地址,例如,您可以通过以下操作使用ajax在笔记本电脑上获取该事件:
class SomeController extends Controller {
//...
/**
* checks if entity was updated since
*
* @Route("/check/{id}/{tstamp}", name="entity_check")
* @Template()
*/
public function checkAction($id, $tstamp) {
//check if anything updated by comparing entity's updated_at against $tstamp
//...
//as the user locale may differ from server's, send back the timestamp too
$data['last_update'] = time();
return new Response(json_encode($data));
}
}
和twig文件的javascript:
<script>
var last_check = {{ "now"|date("t") }};
setInterval(function() {
$.ajax( "{{ url('route_to_your_check_action', {'id': entity.id, 'last_check':''}) }}/" + last_check )
.done(function(data) {
var info = $.parseJSON(data);
last_check = info.last_update;
//if anything changed refresh on user side
})
.fail(function() { //on error do something if needed
});
}
, 12000); // make this call every 12 seconds
</script>
希望它有所帮助。