Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
Table of Contents |
---|
This article is a guide for implementing web socket support function into a Joget application.
The following is an example of implementing the WebSocket feature inside a radio form element. It showcases one of the ways to create a WebSocket plugin and the code belongs to the plugin class.
...
Code Block | ||
---|---|---|
| ||
<div class="form-cell" ${elementMetaData!}> <label class="label"> ${element.properties.label} <span class="form-cell-validator">${decoration}</span> <#if error??> <span class="form-error-message">${error}</span> </#if> </label> <#if (element.properties.enableWebsocket! == 'true')> <input id="isEnabled" name="isEnabled" type="hidden" /> </#if> <#if (element.properties.readonly! == 'true' && element.properties.readonlyLabel! == 'true') > <div class="form-cell-value"><span>${value!?html}</span></div> <input id="${elementParamName!}" name="${elementParamName!}" type="hidden" value="${value!?html}" /> <#else> <input type="text" id="messageInput" placeholder="Enter message"> <button id="sendButton">Send</button> <button id="closeButton">Close</button><br> <div id='output'></div> </#if> <script> $(document).ready(function() { $("#sendButton").off("click"); $("#closeButton").off("click"); if ($("#isEnabled").length > 0) { const ws = new WebSocket(((window.location.protocol === "https:") ? "wss://" : "ws://") + window.location.host + "${request.contextPath}/web/socket/plugin/org.joget.WebSocketPlugin"); ws.onopen = function(event) { console.log(event); $("#output").append('Connection opened with timeStamp: ' + event.timeStamp + '<br/>'); $("#sendButton").on("click", function(){ const message = $("#messageInput").val(); //send message to endpoint ws.send(message); $("#output").append("${username} send " + message + '<br/>'); $("#messageInput").val(""); return false; }); $("#closeButton").on("click", function(){ if (ws.readyState === WebSocket.OPEN) { //close the endpoint connection ws.close(); } $("#sendButton").hide(); $("#closeButton").hide(); return false; }); }; ws.onmessage = function(event) { $("#output").append(event.data + '<br/>'); }; ws.onclose = function(event) { $("#output").append('Connection closed with timeStamp: ' + event.timeStamp + '<br/>'); $("#output").append('WebSocket closed<br/>'); }; ws.onError = function(event) { $("#output").append("Error: " + event.data + '<br/>'); }; } else { $("#output").html('WebSocket is not enable.<br>'); } }); </script> <div style="clear:both;"></div> </div> |
This sample plugin code is available at https://github.com/jogetoss/sample-web-socket-plugin. JogetOSS is a community-led team for open source software related to the Joget no-code/low-code application platform. Projects under JogetOSS are community-driven and community-supported, and you are welcome to contribute to the projects.