How to Build a Real-Time Chat App in Python Using WebSockets Without a Framework

Creating a real-time chat application from scratch using WebSockets in Python is a powerful way to understand how bidirectional communication works on the web. This guide shows you how to implement a simple WebSocket-based chat server and client without relying on frameworks like Django or Flask. What You’ll Need Python 3.7+ websockets library (pip install websockets) Basic HTML/CSS for the frontend Step 1: Set Up a Simple WebSocket Server import asyncio import websockets connected_clients = set() async def echo(websocket, path): connected_clients.add(websocket) try: async for message in websocket: for client in connected_clients: if client != websocket: await client.send(message) except websockets.exceptions.ConnectionClosed: pass finally: connected_clients.remove(websocket) start_server = websockets.serve(echo, "localhost", 6789) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever() This server accepts new connections and relays messages to all other clients. Step 2: Create the HTML Chat Interface WebSocket Chat Chat App Send const ws = new WebSocket("ws://localhost:6789"); const chat = document.getElementById("chat"); ws.onmessage = function(event) { const li = document.createElement("li"); li.textContent = event.data; chat.appendChild(li); }; function sendMessage() { const input = document.getElementById("msg"); ws.send(input.value); input.value = ""; } This frontend connects to the server and allows message sending and receiving in real-time. Step 3: Run the App 1. Run the Python server: python chat_server.py 2. Open the HTML file in multiple browser tabs. 3. Type messages and see them appear across all clients instantly. Security Considerations Use authentication for production environments. Consider using secure WebSockets (wss://) over HTTPS. Validate all messages on the server side. Conclusion This simple yet powerful project introduces you to the inner workings of WebSockets and real-time messaging. With no frameworks involved, you gain full control over the communication pipeline. If you found this helpful, please consider supporting my work: buymeacoffee.com/hexshift

Apr 17, 2025 - 03:16
 0
How to Build a Real-Time Chat App in Python Using WebSockets Without a Framework

Creating a real-time chat application from scratch using WebSockets in Python is a powerful way to understand how bidirectional communication works on the web. This guide shows you how to implement a simple WebSocket-based chat server and client without relying on frameworks like Django or Flask.

What You’ll Need

  • Python 3.7+
  • websockets library (pip install websockets)
  • Basic HTML/CSS for the frontend

Step 1: Set Up a Simple WebSocket Server

import asyncio
import websockets

connected_clients = set()

async def echo(websocket, path):
    connected_clients.add(websocket)
    try:
        async for message in websocket:
            for client in connected_clients:
                if client != websocket:
                    await client.send(message)
    except websockets.exceptions.ConnectionClosed:
        pass
    finally:
        connected_clients.remove(websocket)

start_server = websockets.serve(echo, "localhost", 6789)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

This server accepts new connections and relays messages to all other clients.

Step 2: Create the HTML Chat Interface




  WebSocket Chat


  

Chat App

    This frontend connects to the server and allows message sending and receiving in real-time.

    Step 3: Run the App

    1. Run the Python server: python chat_server.py

    2. Open the HTML file in multiple browser tabs.

    3. Type messages and see them appear across all clients instantly.

    Security Considerations

    • Use authentication for production environments.
    • Consider using secure WebSockets (wss://) over HTTPS.
    • Validate all messages on the server side.

    Conclusion

    This simple yet powerful project introduces you to the inner workings of WebSockets and real-time messaging. With no frameworks involved, you gain full control over the communication pipeline.

    If you found this helpful, please consider supporting my work: buymeacoffee.com/hexshift