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
from websockets import connect
from ypy_websocket import YDoc, WebsocketProvider

async def client():
    ydoc = 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())

Note that YDoc has to be imported from ypy_websocket instead of y_py. This will change in the future, when y_py has the necessary event handlers. ypy_websocket.YDoc is a subclass of y_py.YDoc.

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.1.6.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

ypy_websocket-0.1.6-py2.py3-none-any.whl (6.3 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: ypy_websocket-0.1.6.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for ypy_websocket-0.1.6.tar.gz
Algorithm Hash digest
SHA256 3ee87eeeaa9c5c58d2e1adaf153d513997e0fccd9b8989651fcb239f8d0b1b7f
MD5 f5fbd9b27fcc7f4e26128942677e4708
BLAKE2b-256 64892d517bfe7212e691e226a8d88b1f61c4729621007c45b3f55a7cce83a43e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for ypy_websocket-0.1.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 807e913bde04f94a979571bf083cf6800b0bfeda8cd5d30e7f2a999f0325b48e
MD5 292a8078734912723904d8c2ba4ea9bf
BLAKE2b-256 154385d4d3fb8fb40311d0876b300f0870532fa57d92dbb750239834c5bece08

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