实时通信 | pusher 案例:实时图表(六)
客户端代码
<html> <body> <div id="chart_div" style="width: 100%; height: 500px;"></div> <script src="https://www.gstatic.com/charts/loader.js"></script> <script src="https://js.pusher.com/7.0.3/pusher.min.js"></script> <script> google.charts.load("current", { packages: ["corechart"] }); google.charts.setOnLoadCallback(() => { // Instead of hard-coding the initial table data, // you could fetch it from your server. const dataTable = google.visualization.arrayToDataTable([ ["Year", "Price"], [2013, 400], [2014, 460], ]); const chart = new google.visualization.AreaChart( document.getElementById("chart_div") ); const options = { title: "1 BTC in USD", hAxis: { title: "Year 2022 (Tinywan)", titleTextStyle: { color: "#333" } }, vAxis: { minValue: 0 }, animation: { duration: 100, easing: "out" }, }; chart.draw(dataTable, options); let year = 2015; Pusher.logToConsole = true; const pusher = new Pusher( "108365f54d1d934e7678", // Replace with 'key' from dashboard { cluster: "ap3", // Replace with 'cluster' from dashboard forceTLS: true, } ); const channel = pusher.subscribe("price-btcusd"); channel.bind("new-price", (data) => { const row = [year++, data.value]; dataTable.addRow(row); chart.draw(dataTable, options); }); }); </script> </body> </html>
服务端事件
<?php /** * @desc pusher server * @author Tinywan(ShaoBo Wan) * @date 2022/01/29 23:02 */ require_once '../../vendor/autoload.php'; $options = array( 'cluster' => 'ap3', 'useTLS' => true ); $pusher = new Pusher\Pusher( '108365f54d1d934e7678', '9cfbfd3b06290c427de6', '1339434', $options ); // Trigger a new random event every second. In your application, // you should trigger the event based on real-world changes! while (true) { $pusher->trigger('price-btcusd', 'new-price', array( 'value' => rand(0, 5000) )); sleep(1); }
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2020-02-10 PHP系列 | ThinkPHP5.1 如何自动加载第三方SDK(非composer包 )
2017-02-10 高性能流媒体服务器EasyDarwin