• h5 ws 客户端 监听ws服务器广播的信息


     

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>AI智能写作</title>
    6. <!-- Bootstrap CSS -->
    7. <meta charset="utf-8">
    8. <meta name="viewport" content="width=device-width, initial-scale=1">
    9. <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
    10. <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
    11. <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
    12. <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
    13. <style>
    14. #log p {
    15. margin-bottom: 20px; /* 设置间距 */
    16. font-size: 13px; /* 设置字体大小 */
    17. }
    18. #log div img{
    19. vertical-align: middle;
    20. border-style: none;
    21. width: 20px;
    22. float: left;
    23. }
    24. </style>
    25. </head>
    26. <body>
    27. <div class="container mt-5">
    28. <h1>AI智能写作</h1>
    29. <button id="connectBtn" class="btn btn-primary">Connect</button>
    30. <button id="disconnectBtn" class="btn btn-danger" disabled>Disconnect</button>
    31. <div id="log" class="mt-4" style="height: 300px; overflow: auto;">
    32. <h2>Log:</h2>
    33. </div>
    34. <div class="mt-4">
    35. <label for="message">Message:</label>
    36. <input type="text" id="message" placeholder="来说点什么吧...(Shift + Enter = 换行,前往小应用预设对应身份" class="form-control">
    37. <button id="sendBtn" class="btn btn-success mt-2" disabled>Send</button>
    38. </div>
    39. </div>
    40. <script>
    41. var ws;
    42. function updateScroll() {
    43. var logDiv = document.getElementById("log");
    44. logDiv.scrollTop = logDiv.scrollHeight;
    45. }
    46. document.getElementById("connectBtn").addEventListener("click", function() {
    47. ws = new WebSocket("ws://127.0.0.1:9527");
    48. ws.onopen = function() {
    49. document.getElementById("log").innerText += "Connected\n";
    50. document.getElementById("connectBtn").disabled = true;
    51. document.getElementById("disconnectBtn").disabled = false;
    52. document.getElementById("sendBtn").disabled = false;
    53. updateScroll();
    54. };
    55. ws.onmessage = function(event) {
    56. try {
    57. // 移除前缀 "From other client: "
    58. var jsonString = event.data.replace("From other client: ", "");
    59. // 解析JSON
    60. var jsonData = JSON.parse(jsonString);
    61. var userNickName = jsonData.message.user_nickName;
    62. var msgContent = jsonData.message.msg_content;
    63. // 显示在日志(Log)区域,并使用<p>标签包围每条信息
    64. var logDiv = document.getElementById("log");
    65. var messageElement = document.createElement("div");
    66. messageElement.innerHTML = '

      2023/8/31 上午8:52:55

      ' + userNickName + ": " + msgContent+ '<\/p>';

    67. logDiv.appendChild(messageElement);
    68. updateScroll();
    69. } catch (e) {
    70. var logDiv = document.getElementById("log");
    71. var messageElement = document.createElement("p");
    72. messageElement.innerHTML = "Error parsing message: " + e.message;
    73. logDiv.appendChild(messageElement);
    74. updateScroll();
    75. }
    76. };
    77. ws.onerror = function(error) {
    78. document.getElementById("log").innerText += "Error: " + error.message + "\n";
    79. updateScroll();
    80. };
    81. ws.onclose = function() {
    82. document.getElementById("log").innerText += "Disconnected\n";
    83. document.getElementById("connectBtn").disabled = false;
    84. document.getElementById("disconnectBtn").disabled = true;
    85. document.getElementById("sendBtn").disabled = true;
    86. updateScroll();
    87. };
    88. });
    89. document.getElementById("disconnectBtn").addEventListener("click", function() {
    90. ws.close();
    91. });
    92. document.getElementById("sendBtn").addEventListener("click", function() {
    93. var message = document.getElementById("message").value;
    94. ws.send(message);
    95. document.getElementById("log").innerText += "Sent: " + message + "\n";
    96. updateScroll();
    97. });
    98. </script>
    99. </body>
    100. </html>

  • 相关阅读:
    2023年11月架构设计师上午真题及答案
    Docker部署GItLab
    端口扫描-安全体系-网络安全技术和协议
    SpringBoot整合Dubbo
    计算机组成原理学习笔记:主机三件套硬件部件
    ASEMI快恢复二极管SFP4006,SFP4006参数,SFP4006应用
    chrome网页调试工具的使用步骤
    IDEA Class爆红编译不通过但还是正常运行,查找调用链发现不正常(该显示的没显示)
    latex中的空格
    c#,dotnet, DataMatrix 类型二维码深度识别,OCR,(基于 Halcon)
  • 原文地址:https://blog.csdn.net/jxyk2007/article/details/132621217