<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>chatclient.html Example File | Qt WebChannel 5.12.6</title> <link rel="stylesheet" type="text/css" href="style/offline-simple.css" /> <script type="text/javascript"> document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css"); // loading style sheet breaks anchors that were jumped to before // so force jumping to anchor again setTimeout(function() { var anchor = location.hash; // need to jump to different anchor first (e.g. none) location.hash = "#"; setTimeout(function() { location.hash = anchor; }, 0); }, 0); </script> </head> <body> <div class="header" id="qtdocheader"> <div class="main"> <div class="main-rounded"> <div class="navigationbar"> <table><tr> <td >Qt 5.12</td><td ><a href="qtwebchannel-index.html">Qt WebChannel</a></td><td ><a href="qtwebchannel-chatclient-html-example.html">Qt WebChannel ChatClient HTML Example</a></td><td >chatclient.html Example File</td></tr></table><table class="buildversion"><tr> <td id="buildversion" width="100%" align="right"><a href="qtwebchannel-index.html">Qt 5.12.6 Reference Documentation</a></td> </tr></table> </div> </div> <div class="content"> <div class="line"> <div class="content mainContent"> <div class="sidebar"><div class="sidebar-content" id="sidebar-content"></div></div> <h1 class="title">chatclient.html Example File</h1> <span class="subtitle">chatclient-html/chatclient.html</span> <!-- $$$chatclient-html/chatclient.html-description --> <div class="descr"> <a name="details"></a> <pre class="cpp"> <!DOCTYPE html> <html> <head> <title>ChatClient</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.css" /> <link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/default/easyui.css" /> <link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/icon.css" /> <link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/demo/demo.css" /> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script type="text/javascript" src="http://www.jeasyui.com/easyui/jquery.easyui.min.js"></script> <script type="text/javascript" src="qwebchannel.js"></script> <script> 'use strict'; var wsUri = "ws://localhost:12345"; window.loggedin = false; window.onload = function() { var socket = new WebSocket(wsUri); socket.onclose = function() { console.error("web channel closed"); }; socket.onerror = function(error) { console.error("web channel error: " + error); }; socket.onopen = function() { window.channel = new QWebChannel(socket, function(channel) { //connect to the changed signal of a property channel.objects.chatserver.userListChanged.connect(function() { $('#userlist').empty(); //access the property channel.objects.chatserver.userList.forEach(function(user) { $('#userlist').append(user + '<br>'); }); }); //connect to a signal channel.objects.chatserver.newMessage.connect(function(time, user, message) { $('#chat').append("[" + time + "] " + user + ": " + message + '<br>'); }); //connect to a signal channel.objects.chatserver.keepAlive.connect(function(args) { if (window.loggedin) { //call a method channel.objects.chatserver.keepAliveResponse($('#loginname').val()) console.log("sent alive"); } }); }); } } </script> </head> <body> <div id="loginDialog" class="easyui-dialog" title="Chat Login" data-options="iconCls:'icon-save'" style="width:400px;height:200px;padding:10px"> <form id="loginForm" method="post"> <table cellpadding="5"> <tr><td>Name:</td><td><input class="easyui-validatebox" type="text" id="loginname" name="name" data-options="required:true"></input></td></tr> </table> </form> <div style="text-align:center;padding:5px"> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="submitForm()">Login</a> </div> <div style="text-align:center;padding:5px" id="loginError"> Username already in use. </div> <script> $('#loginForm').submit(submitForm); function submitForm(event) { console.log("DEBUG login: " + channel); channel.objects.chatserver.login($('#loginname').val(), function(arg) { console.log("DEBUG login response: " + arg); if (arg === true) { $('#loginError').hide(); $('#loginDialog').dialog('close'); window.loggedin = true; } else { $('#loginError').show(); } }); console.log($('#loginname').val()); if (event !== undefined) event.preventDefault(); return false; } </script> </div> <div class="easyui-layout" style="width:500px;height:300px;"> <div data-options="region:'east',split:true" title="Users" id="userlist" style="width:100px;"> </div> <div data-options="region:'south',split:true" style="height:50px;"> <form id="messageForm"> <input class="easyui-validatebox" type="text" id="message" name="name" style="width: 97%"></input> </form> </div> <div data-options="region:'center'" id="chat"> </div> <script> $('#messageForm').submit(submitMessage); function submitMessage(event) { channel.objects.chatserver.sendMessage($('#loginname').val(), $('#message').val()); $('#message').val(''); if (event !== undefined) event.preventDefault(); return false; } </script> </div> <script type="text/javascript"> $(document).ready(function() { $('#loginError').hide(); }); </script> </body> </html> </pre> </div> <!-- @@@chatclient-html/chatclient.html --> </div> </div> </div> </div> </div> <div class="footer"> <p> <acronym title="Copyright">©</acronym> 2019 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners.<br/> The documentation provided herein is licensed under the terms of the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License version 1.3</a> as published by the Free Software Foundation.<br/> Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners. </p> </div> </body> </html>