基于aiohttp提供websocket服务器功能的异步http web框架
tranzit的Python项目详细描述
#那是什么?
tranzit是一个支持websockets
(全双工套接字通信)的异步微型web框架。有了**tranzit**,您可以很容易地维护
推拉websocket消息。
事实上,**tranzit**只是一个很小的包装器,用于提供异步websocket服务器(可以单独运行)和一个小的*cli*工具。
<;!--待办事项:自述文件的其余部分-->;
安装
$tranzit run现在您的项目运行在http://0.0.0.0:3000/
camel.html
common/
static/
tz.js
main.py
server.yml
````
main.py文件启动整个过程。它从
*server.yml*获取配置,例如:
*http服务器主机
*http服务器端口
*是否启动websocket服务器
*websocket服务器主机
*websocket服务器端口
*要运行的应用程序
*这是否是生产启动(尚未有意义)
>;**信息:**您应该始终将project_dir传递给*mainserver()*
constructor
\r路由和视图
all routing(对于http请求和websocket请求)由*apps/\<;app_name>;/routes.py*文件处理。
`path_prefix`变量包含由t处理的url的前缀his
应用程序(例如[http://0.0.0.0:3000/\<;path懔prefix>;/某些懔url])。
`app懔static懔u dir`变量包含此应用程序的静态
文件夹的绝对路径。
http请求的所有视图都由*routes*dict调度。
http视图是普通的**aiohttp**视图s.
所有websocket视图都由*ws-rules*dict调度。
请参阅下面的说明。
关于**aiohttp**middlewares[此处](https://docs.aiohttp.org/en/stable/web_advanced.html middlewares)。
它包含
常见的项目静态文件,可通过
http://0.0.0.0:3000/static/common/your悻glority.js
第二种类型是特定于应用的:
0:3000/静态/应用程序名/另一个光荣的.js
```
现在这个视图可以通过websockets获得。
要调用这个视图函数,在
客户端执行类似的操作:
``javascript
var ws=new websocket('ws://0.0.0.0:19719');
ws.onMessage=function(response){
console.log(response.data);
};
ws.send('get_hello');
````
我们发送消息来调用视图。
下面是该消息的一个难听语法:
`<;function_name>;arg1、arg2、arg3,…`
现在看看websocket视图:
`` python
类wspushhandle(对象):
@staticmethod
async def get_hello(*args,**kwargs):
send_func=kwargs['send_func']
writer=kwargs['writer']
为真时:
等待异步睡眠(1)
等待发送函数(writer,'hello!')
```
``
~~所有websocket路由都在同一个命名空间中!避免碰撞。
>;**另一个警告:**未提供安全措施!确保验证
websocket请求(例如,在ws-view参数中传递用户会话密钥)
http服务器。
*api*是一个处理程序类实例,它实现了3个函数,如下所示:
``python
classtranzitwhandler(对象):
async def handle\u text(self,loop,writer,msg):
pass
async def handle_binary(self,loop,writer,msg):
pass
async def handle_buffered(self,loop,reader,writer,first_msg):
pass
``````
/>从tranzit.web导入websocketserver
class myhandler():
def初始(self,rules={}):
self.rules=rules
async def handle\u文本(self,loop,writer,msg):
response=msg.upper()
wait websocketserver.send\u文本(writer,response)
永远不去()
```
tranzit是一个支持websockets
(全双工套接字通信)的异步微型web框架。有了**tranzit**,您可以很容易地维护
推拉websocket消息。
事实上,**tranzit**只是一个很小的包装器,用于提供异步websocket服务器(可以单独运行)和一个小的*cli*工具。
<;!--待办事项:自述文件的其余部分-->;
安装
$tranzit run现在您的项目运行在http://0.0.0.0:3000/
camel.html
common/
static/
tz.js
main.py
server.yml
````
main.py文件启动整个过程。它从
*server.yml*获取配置,例如:
*http服务器主机
*http服务器端口
*是否启动websocket服务器
*websocket服务器主机
*websocket服务器端口
*要运行的应用程序
*这是否是生产启动(尚未有意义)
>;**信息:**您应该始终将project_dir传递给*mainserver()*
constructor
\r路由和视图
all routing(对于http请求和websocket请求)由*apps/\<;app_name>;/routes.py*文件处理。
`path_prefix`变量包含由t处理的url的前缀his
应用程序(例如[http://0.0.0.0:3000/\<;path懔prefix>;/某些懔url])。
`app懔static懔u dir`变量包含此应用程序的静态
文件夹的绝对路径。
http请求的所有视图都由*routes*dict调度。
http视图是普通的**aiohttp**视图s.
所有websocket视图都由*ws-rules*dict调度。
请参阅下面的说明。
关于**aiohttp**middlewares[此处](https://docs.aiohttp.org/en/stable/web_advanced.html middlewares)。
它包含
常见的项目静态文件,可通过
http://0.0.0.0:3000/static/common/your悻glority.js
第二种类型是特定于应用的:
0:3000/静态/应用程序名/另一个光荣的.js
```
现在这个视图可以通过websockets获得。
要调用这个视图函数,在
客户端执行类似的操作:
``javascript
var ws=new websocket('ws://0.0.0.0:19719');
ws.onMessage=function(response){
console.log(response.data);
};
ws.send('get_hello');
````
我们发送消息来调用视图。
下面是该消息的一个难听语法:
`<;function_name>;arg1、arg2、arg3,…`
现在看看websocket视图:
`` python
类wspushhandle(对象):
@staticmethod
async def get_hello(*args,**kwargs):
send_func=kwargs['send_func']
writer=kwargs['writer']
为真时:
等待异步睡眠(1)
等待发送函数(writer,'hello!')
```
``
~~所有websocket路由都在同一个命名空间中!避免碰撞。
>;**另一个警告:**未提供安全措施!确保验证
websocket请求(例如,在ws-view参数中传递用户会话密钥)
http服务器。
*api*是一个处理程序类实例,它实现了3个函数,如下所示:
``python
classtranzitwhandler(对象):
async def handle\u text(self,loop,writer,msg):
pass
async def handle_binary(self,loop,writer,msg):
pass
async def handle_buffered(self,loop,reader,writer,first_msg):
pass
``````
/>从tranzit.web导入websocketserver
class myhandler():
def初始(self,rules={}):
self.rules=rules
async def handle\u文本(self,loop,writer,msg):
response=msg.upper()
wait websocketserver.send\u文本(writer,response)
永远不去()
```