WebSocket connector for Ypy
Project description
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ee87eeeaa9c5c58d2e1adaf153d513997e0fccd9b8989651fcb239f8d0b1b7f
|
|
| MD5 |
f5fbd9b27fcc7f4e26128942677e4708
|
|
| BLAKE2b-256 |
64892d517bfe7212e691e226a8d88b1f61c4729621007c45b3f55a7cce83a43e
|
File details
Details for the file ypy_websocket-0.1.6-py2.py3-none-any.whl.
File metadata
- Download URL: ypy_websocket-0.1.6-py2.py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
807e913bde04f94a979571bf083cf6800b0bfeda8cd5d30e7f2a999f0325b48e
|
|
| MD5 |
292a8078734912723904d8c2ba4ea9bf
|
|
| BLAKE2b-256 |
154385d4d3fb8fb40311d0876b300f0870532fa57d92dbb750239834c5bece08
|