init
This commit is contained in:
36
main.py
Normal file
36
main.py
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
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)
|
||||||
34
templates/index.html
Normal file
34
templates/index.html
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Flask WebSocket Chat</title>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js"></script>
|
||||||
|
<script>
|
||||||
|
var socket = io();
|
||||||
|
var username = prompt("Enter your name:"); // Ask for username
|
||||||
|
socket.emit("join", username); // Notify server of new user
|
||||||
|
|
||||||
|
// Listen for messages from server
|
||||||
|
socket.on("message", function(data) {
|
||||||
|
var messages = document.getElementById("messages");
|
||||||
|
messages.innerHTML += `<p>${data}</p>`;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Function to send messages
|
||||||
|
function sendMessage() {
|
||||||
|
var msgInput = document.getElementById("msg");
|
||||||
|
var message = msgInput.value;
|
||||||
|
socket.send(message);
|
||||||
|
msgInput.value = "";
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Flask WebSocket Chat</h2>
|
||||||
|
<input id="msg" type="text" placeholder="Enter your message">
|
||||||
|
<button onclick="sendMessage()">Send</button>
|
||||||
|
<div id="messages"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
Reference in New Issue
Block a user