Harness the power of real-time data with DronaHQ's WebSocket integration! This tutorial demonstrates building an interactive dashboard for live data streams, eliminating the need for constant page refreshes and complex backend solutions. We'll leverage DronaHQ's Global JS Objects for reusable functions and variables, enabling seamless live updates across your applications. Ideal for developers aiming to enhance user engagement or create real-time monitoring dashboards.
This project showcases:
DronaHQ's Global JS Objects provide reusable JavaScript functions and variables accessible across your entire account. Use them in Data Binding, Event Actions, JS Transform, and more. Once saved, they're readily available in any app, promoting code reuse and efficiency.
Key Advantages:
The user interface includes:
WebSockets provide full-duplex communication over a single TCP connection, enabling servers to push data to clients as it becomes available. This is perfect for real-time applications like financial dashboards and chat programs. DronaHQ's WebSocket integration creates dynamic interfaces that update instantly without refreshing or polling. For a deeper dive into WebSockets with DronaHQ, click here.
<code class="language-javascript">let socket = null; // WebSocket connection let tableData = {}; // Stores latest data // Logs messages to the console function logToConsole(message) { console.log(message); } // Starts WebSocket connection function startWebSocket(symbol) { const streamUrl = `wss://stream.binance.com:9443/ws/${symbol}@trade`; socket = new WebSocket(streamUrl); socket.onopen = () => logToConsole(`Connected to ${symbol}.`); socket.onmessage = (event) => { const data = JSON.parse(event.data); const price = parseFloat(data.p).toFixed(2); const symbol = data.s.toUpperCase(); const time = new Date(data.T).toLocaleTimeString(); logToConsole(`Received data for ${symbol}: Time - ${time}, Price - $${price}`); tableData[symbol] = { time, price: `$${price}` }; UTILITY.SETCTRLVALUE([{ name: "tablegrid", value: [{ time, price: `$${price}` }] }]); }; socket.onerror = (error) => logToConsole(`WebSocket Error: ${error.message}`); socket.onclose = () => logToConsole(`WebSocket closed.`); } // Stops WebSocket connection function stopWebSocket() { if (socket) { logToConsole("Closing WebSocket..."); socket.onclose = () => logToConsole("WebSocket closed."); socket.onerror = (error) => logToConsole(`Error closing: ${error.message}`); socket.close(); socket = null; logToConsole("WebSocket stopped."); } else { logToConsole("No active connection."); } } // Export functions for DronaHQ const ExportModule = { startWebSocket, stopWebSocket };</code>
In DronaHQ, use startWebSocket
and stopWebSocket
within Data Queries to integrate WebSocket functionality.
Example JSCode
for clearing the table on app load:
<code class="language-javascript">async function JSCode(output) { if (typeof Formbuilder === "undefined") { JSOBJECTS.stopWebSocket(); } UTILITY.SETCTRLVALUE([{ name: "tablegrid", value: [] }]); return output; }</code>
Configure triggers in the Action Flow of your button controls:
This project highlights the power of DronaHQ's WebSocket capabilities for building dynamic, real-time applications. The combination of a user-friendly interface and reusable code makes it easy to implement live data streaming for various applications.
The above is the detailed content of Setting up WebSocket in DronaHQ. For more information, please follow other related articles on the PHP Chinese website!