Skip to main content

A lightweight WebSocket-based communication library

Project description

Lazy Socket

An attempt at creating a websocket based communication system that handles all the threading and async stuff in the background.

Installation

pip install lazy-socket

Usage

Server

The server can be created by subclassing LazyServer and implementing the process_message method. This is an async method that will be called whenever a message is received from a client. To respond to the client, use the send method of the client object passed to the method. A list of clients is available via the clients attribute of the server.

import asyncio
from lazy_socket.server import LazyServer


class Server(LazyServer):

    async def process_message(self, client, message):
        await client.send(f"Received: {message}")

if __name__ == "__main__":
    server = Server(name="TestServer", host="0.0.0.0", port=5000, version="1.0")

    try:
        server.start()
    except KeyboardInterrupt:
        print("Shutting down server...")

Client

The client can be created by instantiating the LazyClient class. The client has a queue attribute that can be used to receive messages from the server. The client must be started using the start method. Messages can be sent to the server using the send method.

A message lazy_client:connected:{uri} is sent to the queue when the client successfully connects to the server.

from lazy_socket.client import LazyClient

client = LazyClient()
client.start()

while True:
    if client.queue.empty():
        continue

    message = client.queue.get()
    if message.startswith("lazy_client:connected:"): 
        client.send("Hello, Lazy Server!")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lazy_socket-0.0.5.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lazy_socket-0.0.5-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file lazy_socket-0.0.5.tar.gz.

File metadata

  • Download URL: lazy_socket-0.0.5.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for lazy_socket-0.0.5.tar.gz
Algorithm Hash digest
SHA256 d1b50a885b249783ffa702c3ed20ab9c3f37d1608aa08b986af7a6fb6319a3a2
MD5 3b0cbe0259940f91c9700d4fa76253b3
BLAKE2b-256 ae88492398625b228d8f8b5046de95449b3c8b4e50cdab0686948b3eae33497c

See more details on using hashes here.

File details

Details for the file lazy_socket-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: lazy_socket-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for lazy_socket-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a888d4ea66d6fb6a8b788d4f1fed0cd4e8d61b4a47880be1e1b7f5ef3b8c0ae5
MD5 aa25b2a4a24a7dab3581bf207e584e19
BLAKE2b-256 4b1af6f9783b8f32bcc4294de0c73c3689c322eb18545f50351fb29ab5f4bdc0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page