Skip to main content

WebSocket connector for Ypy

Project description

Build Status Code style: black

ypy-websocket

ypy-websocket is an async WebSocket connector for Ypy.

Usage

Client

Here is a code example:

import asyncio
import y_py as Y
from websockets import connect
from ypy_websocket import WebsocketProvider

async def client():
    ydoc = Y.YDoc()
    websocket = await connect("ws://localhost:1234/my-roomname")
    WebsocketProvider(ydoc, websocket)
    ymap = ydoc.get_map("map")
    with ydoc.begin_transaction() as t:
        ymap.set(t, "key", "value")

asyncio.run(client())

Server

Here is a code example:

import asyncio
from websockets import serve
from ypy_websocket import WebsocketServer

async def server():
    websocket_server = WebsocketServer()
    async with serve(websocket_server.serve, "localhost", 1234):
        await asyncio.Future()  # run forever

asyncio.run(server())

WebSocket API

The WebSocket object passed to WebsocketProvider and WebsocketServer.serve must respect the following API:

class WebSocket:

    @property
    def path(self) -> str:
        # can be e.g. the URL path
        # or a room identifier
        return "my-roomname"

    def __aiter__(self):
        return self

    async def __anext__(self) -> bytes:
        # async iterator for receiving messages
        # until the connection is closed
        try:
            message = await self.recv()
        except:
            raise StopAsyncIteration()
        return message

    async def send(self, message: bytes):
        # send message
        pass

    async def recv(self) -> bytes:
        # receive message
        return b""

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

ypy_websocket-0.3.2.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

ypy_websocket-0.3.2-py2.py3-none-any.whl (9.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file ypy_websocket-0.3.2.tar.gz.

File metadata

  • Download URL: ypy_websocket-0.3.2.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for ypy_websocket-0.3.2.tar.gz
Algorithm Hash digest
SHA256 91393cec3150318b88aac3fe21beba4248aa35418f30ee7677e4ea7025cc672a
MD5 030de7f2c6f5478d7b76cd48c16f4c12
BLAKE2b-256 b189a67f8bf65505983c8266867a3b0aa8f3bab47147244bc04c8772e174fd14

See more details on using hashes here.

Provenance

File details

Details for the file ypy_websocket-0.3.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for ypy_websocket-0.3.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9082ca30c37b8804e4831f857579c8cc7f55ba361b1fef6d08d543b9650d09f6
MD5 9156c5c0142fa75dc7989c2ecc8943d1
BLAKE2b-256 ac9b8a9081634af864c1c02da9d8e2aaadaa4d4d0d213c57e0e8e8baeefd6f66

See more details on using hashes here.

Provenance

Supported by

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