在没有页面刷新的情况下更新注册用户数的总数

时间:2017-04-19 10:46:20

标签: php laravel real-time

我正在制作一些实时数据应用程序,我希望显示在我的网站上注册的用户总数。

只要新用户在没有刷新页面的情况下注册,计数就会自动刷新。

我怎样才能做到这一点?

我正在使用php,Laravel和MySQL

4 个答案:

答案 0 :(得分:2)

EDITED


您需要的是Broadcasting。你需要实现2件事

  • 订阅者:在您的客户端,连接到您的websocket服务器
  • 发布者(您的websocket服务器):在服务器端,等待任何订阅者的传入连接

基本的想法是,当您注册用户时,如果成功,此时请致电发布者向其订阅者发送消息以更新用户数量。(就像当您订阅某人的YouTube频道时,他们上传时新视频,您会收到通知)

您可以使用https://socket.io/来实施您的客户端
Laravel也支持它,找到Socket.io部分laravel

答案 1 :(得分:2)

您可以使用Laravel的广播,Laravel默认支持redis和pusher。

配置广播

config/broadcasting.php中有一组配置,只需直接或通过.env

在文件中添加所需的配置

在播放任何活动之前,您首先需要注册app/Providers/BroadcastServiceProvider。在新的Laravel应用程序中,您只需要在uncomment配置文件的providers数组中config/app.php此提供程序。

我个人使用Pusher服务,您将获得PUSHER_APP_IDPUSHER_APP_KEYPUSHER_APP_SECRET

配置Laravel -Echo(Js - 接收广播)

使用pusher时,使用laravel-echo js监听Laravel播放的事件,你可以通过npm install安装

npm install --save laravel-echo pusher-js

在app.js中添加此内容以导入并初始化Echo并存储在窗口对象中

import Echo from "laravel-echo"

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'your-pusher-key'
});

发送广播

在定义广播事件时,有三种不同的方法broadcastOnbroadcastWithbroadcastData。通过触发事件进行广播

event(new youBroadcastClassName($array))

接收广播

Echo.channel('channel-name')
.listen('youBroadcastClassName', (e) => {
    console.log(e);
});

现在它可以在js中使用,你可以使用一些js函数在前端显示。

在您的情况下,一旦注册用户触发前端需要的数据的广播事件,只需在js中接收并在视图中填充

浏览此链接Laravel Broadcasting

答案 2 :(得分:1)

使用brodacasting功能。

  

在许多现代Web应用程序中,WebSockets用于实现实时,实时更新的用户界面。当在服务器上更新某些数据时,通常通过WebSocket连接发送消息以由客户端处理。这为持续轮询应用程序进行更改提供了更强大,更有效的替代方案。

     

为了帮助您构建这些类型的应用程序,Laravel可以轻松地通过WebSocket连接“广播”您的事件。通过广播Laravel事件,您可以在服务器端代码和客户端JavaScript应用程序之间共享相同的事件名称。

答案 3 :(得分:0)

WebSocket绝对是这个问题的正确答案。但对于初学者,我认为你总是可以使用setInterval和旧的ajax

我并不是说这是最正确的答案,但这会更简单,更容易。