36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from flask import Flask, render_template, request
|
|
from flask_socketio import SocketIO, send, emit, join_room, leave_room
|
|
|
|
app = Flask(__name__)
|
|
app.config['SECRET_KEY'] = 'your_secret_key'
|
|
|
|
socketio = SocketIO(app)
|
|
|
|
# Dictionary to store users and their assigned rooms
|
|
users = {}
|
|
|
|
@app.route('/')
|
|
def index():
|
|
return render_template('index.html')
|
|
|
|
# Handle new user joining
|
|
@socketio.on('join')
|
|
def handle_join(username):
|
|
users[request.sid] = username # Store username by session ID
|
|
join_room(username) # Each user gets their own "room"
|
|
emit("message", f"{username} joined the chat", room=username)
|
|
|
|
# Handle user messages
|
|
@socketio.on('message')
|
|
def handle_message(data):
|
|
username = users.get(request.sid, "Anonymous") # Get the user's name
|
|
emit("message", f"{username}: {data}", broadcast=True) # Send to everyone
|
|
|
|
# Handle disconnects
|
|
@socketio.on('disconnect')
|
|
def handle_disconnect():
|
|
username = users.pop(request.sid, "Anonymous")
|
|
emit("message", f"{username} left the chat", broadcast=True)
|
|
|
|
if __name__ == '__main__':
|
|
socketio.run(app, debug=True) |