A tornado MSTP library, using WebSocket.
Project description
Tornado MSTP
A tornado MSTP library, using WebSocket.
Installation
pip install tornado_mstp
Easy Examples
See repo's directory named 'examples'.
Usage
Server
As a server-side application using tornado_mstp. You should first create a
handler class inherited from MstpSocketHandler.
from tornado_mstp import MstpSocketHandler
class MyMstpSocketHandler(MstpSocketHandler):
pass
There are two optional class attributes, automatic_closing_time(default to 10) and ver(default to "0.1"), that indicate MSTP server information
need to be set.
from tornado_mstp import MstpSocketHandler
class MyMstpSocketHandler(MstpSocketHandler):
automatic_closing_time = 15
ver = "0.1"
login method MUST be overridden to make an authorization, and returns a
tornado_mstp.schema.LoginResponse.
from typing import Optional
from tornado_mstp import MstpSocketHandler
from tornado_mstp.schema import LoginResponse
class MyMstpSocketHandler(MstpSocketHandler):
automatic_closing_time = 15
ver = "0.1"
async def login(
self,
*,
secret: Optional[str] = None
) -> LoginResponse:
# your login processing
return LoginResponse(
status=True,
connection_interval=300,
session_alive_time=300,
session_id="ajsdkjalskdjlka"
)
So as reconnect, that returns a tornado_mstp.schema.ReconnectResponse.
from typing import Optional
from tornado_mstp import MstpSocketHandler
from tornado_mstp.schema import ReconnectResponse
class MyMstpSocketHandler(MstpSocketHandler):
automatic_closing_time = 15
ver = "0.1"
async def reconnect(
self,
*,
session_id: Optional[str] = None
) -> ReconnectResponse:
# your reconnect logics
return ReconnectResponse(status=True)
There is no need to worry about tornado websocket handler's on_message method.
Each MSTP package type of message has a callback function who needs to be
implemented. For example, for segment handling.
from typing import Optional
from tornado_mstp import MstpSocketHandler
from tornado_mstp.schema import ContentType
class MyMstpSocketHandler(MstpSocketHandler):
automatic_closing_time = 15
ver = "0.1"
async def handle_segment(
self,
package_id: Optional[str] = None,
message_index: Optional[int] = None,
segment_index: Optional[int] = None,
is_end: Optional[bool] = None,
content_type: Optional[ContentType] = None,
content: Optional[str] = None
) -> None:
print(f"received content: {content}")
After implementing all callback functions, server can handle any MSTP packages as you want.
Client
As a client-side connection using tornado_mstp. You can just create an
mstpsocket_connect using tornado_mstp.mstpsocket_connect. It has the
same usage of tornado.websocket.websocket_connect with some extra arguments.
import asyncio
from typing import Optional
from tornado_mstp import mstpsocket_connect
from tornado_mstp import MstpSocketClientConnection
class MyMstpSocketClientConnection(MstpSocketClientConnection):
async def handle_login_response(
self,
*,
status: Optional[bool] = None,
connection_interval: Optional[int] = None,
session_alive_time: Optional[int] = None,
session_id: Optional[str] = None,
reason: Optional[str] = None
) -> None:
print(session_id)
async def main():
await mstpsocket_connect(
url="mstp://localhost:8005/mstp",
secret="secret",
connection_class=MyMstpSocketClientConnection
)
f = asyncio.Future()
await f
if __name__ == '__main__':
asyncio.run(main())
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 tornado_mstp-0.1.1.tar.gz.
File metadata
- Download URL: tornado_mstp-0.1.1.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30cb8b9aa5b7e22d5b019df680c71ca0754ee12cac8df89ba192dfef36281f51
|
|
| MD5 |
2f058705367f86c911b1a62edc0627f0
|
|
| BLAKE2b-256 |
e9a760e81f26c2712803108b8c032250ef7548f818c353c572f07757d53db080
|
File details
Details for the file tornado_mstp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: tornado_mstp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26bec1a00979e906cc11fa74bef910680358fd4a5c374583c12c1ec563aa6d8a
|
|
| MD5 |
eb599130da3f6816bbab2ccf04eb8258
|
|
| BLAKE2b-256 |
a4638e295c9e7603f0720aacf3c10804b160ad44953e23f557cd9193ae949d3c
|