我正在制作一些实时数据应用程序,我希望显示在我的网站上注册的用户总数。
只要新用户在没有刷新页面的情况下注册,计数就会自动刷新。
我怎样才能做到这一点?
我正在使用php,Laravel和MySQL
答案 0 :(得分:2)
:
您需要的是Broadcasting
。你需要实现2件事
基本的想法是,当您注册用户时,如果成功,此时请致电发布者向其订阅者发送消息以更新用户数量。(就像当您订阅某人的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_ID
,PUSHER_APP_KEY
和PUSHER_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'
});
发送广播
在定义广播事件时,有三种不同的方法broadcastOn
,broadcastWith
,broadcastData
。通过触发事件进行广播
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
。
我并不是说这是最正确的答案,但这会更简单,更容易。