欢迎访问宙启技术站
智能推送

Python实现基于SocketIO的多人聊天室

发布时间:2023-12-17 12:37:30

以下是一个基于SocketIO的多人聊天室的示例代码:

# 引入必要的库
from flask import Flask, render_template
from flask_socketio import SocketIO, emit

# 创建Flask应用程序和SocketIO实例
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

# 定义路由和事件处理函数
@app.route('/')
def index():
    return render_template('index.html')

@socketio.on('message')
def handle_message(message):
    emit('message', message, broadcast=True)

@socketio.on('connect')
def handle_connect():
    emit('message', 'A user has connected.', broadcast=True)

@socketio.on('disconnect')
def handle_disconnect():
    emit('message', 'A user has disconnected.', broadcast=True)

# 运行应用程序
if __name__ == '__main__':
    socketio.run(app)

上述代码创建了一个基于Flask和SocketIO的多人聊天室。当有用户连接时,会向所有用户广播一个连接消息,当有用户断开连接时,也会向所有用户广播一个断开连接消息。

使用该聊天室的示例代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>Chat Room</title>
</head>
<body>
    <h1>Chat Room</h1>
    <div id="message-container"></div>
    <input type="text" id="input-message" placeholder="Message">
    <button id="send-button">Send</button>
    <script src="https://cdn.socket.io/socket.io-3.0.1.min.js"></script>
    <script>
        var socket = io.connect();

        socket.on('message', function(message) {
            var container = document.getElementById('message-container');
            var messageElement = document.createElement('div');
            messageElement.appendChild(document.createTextNode(message));
            container.appendChild(messageElement);
        });

        document.getElementById('send-button').onclick = function() {
            var inputMessage = document.getElementById('input-message');
            var message = inputMessage.value;
            socket.emit('message', message);
            inputMessage.value = '';
        };
    </script>
</body>
</html>

上述HTML代码中,使用了Socket.IO提供的JavaScript库来与服务器进行实时通信。当用户点击发送按钮时,会将输入的消息发送给服务器,服务器会将该消息广播给所有用户,所有用户都能看到发送的消息。

要运行这个聊天室,请安装Flask和SocketIO库,并确保浏览器能够访问聊天室的URL。然后运行Python代码,服务器将在本地的5000端口上运行。在浏览器中打开聊天室网页,在不同的浏览器标签或窗口中输入消息,就可以实现多人聊天。