Flask + SocketIO实现简易实时在线聊天室

下面是一个简单的示例,演示了使用 Python(使用 Flask 框架)作为服务端,以及 HTML、JavaScript 和 Socket.io 作为前端,实现一个简单的实时聊天室。

首先,确保你已经安装了 Flask 和 Flask-SocketIO:

pip install Flask Flask-SocketIO

然后,创建一个名为 app.py 的 Python 文件:

from flask import Flask, render_template
from flask_socketio import SocketIO

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

@app.route('/')
def index():
    return render_template('index.html')

@socketio.on('message')
def handle_message(msg):
    print('Message:', msg)
    socketio.emit('message', msg)

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

接下来,创建一个名为 templates 的文件夹,并在其中创建一个名为 index.html 的 HTML 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Real-time Chat</title>
    <style>
        #messages {
            list-style-type: none;
            margin: 0;
            padding: 0;
        }

        #messages li {
            margin-bottom: 10px;
        }
    </style>
</head>
<body>
    <ul id="messages"></ul>
    <form id="form" action="">
        <input id="input" autocomplete="off" /><button>Send</button>
    </form>

    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.1.3/socket.io.js"></script>
    <script>
        $(document).ready(function () {
            var socket = io();

            $('form').submit(function(){
                socket.emit('message', $('#input').val());
                $('#input').val('');
                return false;
            });

            socket.on('message', function(msg){
                $('#messages').append($('<li>').text(msg));
            });
        });
    </script>
</body>
</html>

在命令行中运行 python app.py 启动应用,然后打开浏览器访问 http://localhost:5000。你应该能够在浏览器中看到一个简单的实时聊天室,可以在多个浏览器窗口中进行实时消息的发送和接收。

posted on 2023-12-15 15:03  JentZhang  阅读(232)  评论(0编辑  收藏  举报