html写一个向flask_socketio发送消息和接收消息并显示在页面上

news/2024/7/6 2:01:16

以下是一个简单的HTML页面,它包含一个输入框、一个发送按钮和一个显示区域。用户可以在输入框中输入消息,点击发送按钮,然后这个消息会被发送到 Flask-SocketIO 服务器。当服务器回应消息时,它会在页面的显示区域显示出来。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask-SocketIO Chat</title>
    <!-- Import the Socket.IO client library -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js"></script>
    <script type="text/javascript">
        document.addEventListener("DOMContentLoaded", function() {
            const socket = io.connect('http://localhost:5000');
            const messagesDiv = document.getElementById('messages');
            const inputElem = document.getElementById('messageInput');
            const buttonElem = document.getElementById('sendButton');

            // Listen for a 'response' event from the server
            socket.on('response', function(msg) {
                const pElem = document.createElement('p');
                pElem.innerText = msg.data;
                messagesDiv.appendChild(pElem);
            });

            // Send the input message to the server on button click
            buttonElem.addEventListener('click', function() {
                const message = inputElem.value;
                socket.emit('send_message', {data: message});
                inputElem.value = ''; // Clear the input
            });
        });
    </script>
</head>
<body>
    <h1>Flask-SocketIO Chat</h1>
    <input type="text" id="messageInput" placeholder="Type your message here...">
    <button id="sendButton">Send</button>
    <div id="messages"></div>
</body>
</html>

此外,Flask-SocketIO 服务器端代码可以处理客户端发送的 send_message 事件,并返回一个 response 事件。例如:

from flask import Flask
from flask_socketio import SocketIO

app = Flask(__name__)
socketio = SocketIO(app)

@socketio.on('send_message')
def handle_message(message):
    print('Received message:', message['data'])
    socketio.emit('response', {'data': 'Server received: ' + message['data']})

if __name__ == '__main__':
    socketio.run(app, debug=True)

当用户在HTML页面上输入消息并点击发送按钮时,消息会被发送到 Flask-SocketIO 服务器。服务器接收到消息后,会发送一个回应,该回应将在页面上显示。


http://lihuaxi.xjx100.cn/news/1470023.html

相关文章

随手笔记——雷达点云话题转PCL,处理数据后再转为雷达点云话题常用方式

随手笔记——雷达点云话题转PCL&#xff0c;处理数据后再转为雷达点云话题常用方式 说明主要函数 说明 将接收到的雷达点云话题转换为pcl点云格式&#xff0c;处理点云后&#xff0c;再次转换为点云话题并发布 主要函数 void laserCloudHandler(const sensor_msgs::PointClo…

Arduino平台ESP8266数据flash存储模式使用介绍

Arduino平台ESP8266数据flash存储模式使用介绍 &#x1f4cc;参考说明文档&#xff1a;https://arduino-esp8266.readthedocs.io/en/latest/PROGMEM.html PROGMEM关键字&#xff0c;原基于AVR单片机使用的&#xff0c;为了节省RAM空间&#xff0c;将字符串放入闪存中&#xff0…

【高级IO】- 多路转接之 poll | epoll

目录 I/O多路转接 - poll poll 函数 poll 服务器 poll 服务器 poll 的优点 poll 的缺点 I/O 多路转接 - epoll epoll 的相关系统调用 epoll_create 函数 epoll_ctl 函数 epoll_wait 函数 epoll 工作原理 epoll 服务器 ​编辑 epoll 的优点&#xff08;与 sele…

常见前端面试之VUE面试题汇总一

1. Vue 的基本原理 当 一 个 Vue 实 例 创 建 时 &#xff0c; Vue 会 遍 历 data 中 的 属 性 &#xff0c; 用 Object.defineProperty &#xff08; vue3.0 使 用 proxy&#xff09; 将 它 们 转 为 getter/setter&#xff0c;并且在内部追踪相关依赖&#xff0c;在属性被访…

【LeetCode-经典面试150题-day8】

11.盛最多水的容器 题意&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&a…

Vue-12.集成postcss.config.js

PostCSS 介绍 PostCSS 是一个用于处理样式的工具&#xff0c;可以通过插件来定制其行为。以下是一些常用的 PostCSS 插件和 API 的介绍&#xff1a; Autoprefixer: 这是一个流行的 PostCSS 插件&#xff0c;用于自动添加浏览器前缀&#xff0c;以确保您的样式在不同浏览器中具…

智能节水灌溉远程监控解决方案

随着经济社会的飞速发展&#xff0c;农业在其中的份量功不可没。农田灌溉是农业生产中的重中之重&#xff0c;但传统农田灌溉管理存在较大弊端&#xff0c;机井分散&#xff0c;不便管理&#xff0c;造成水资源的浪费&#xff0c;地下水严重匮乏&#xff0c;灌溉水利用系数较低…

常见的时序数据库

1.概念 时序数据库全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签&#xff08;按照时间的顺序变化&#xff0c;即时间序列化&#xff09;的数据&#xff0c;带时间标签的数据也称为时间序列数据。 时间序列数据主要由电力行业、化工行业、气象行业、地理信息…