基于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)

永远不去()
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java Double。将长位加倍到C#位转换器。ToDouble   java如何使用正则表达式从固定的Y位数中提取最后的X位数?   java如何显示ChatMessage类列表中的字符串消息属性?   java从JSON或XML提要导入数据,并在Android中创建列表   在整数之间使用按位AND运算符的java好处?   java从Android中的Bean类获取空值?   java会话id对另一台服务器意味着什么?   java未选择案例时开关的工作方式   java组织。openqa。硒。SessionNotCreatedException:无法创建新的远程会话。在emulator中初始化安卓驱动程序时   JavaSWT父和子对话框通信   java请确保java_HOME指向JDK而不是JRE   java用户即使在成功登录后也是匿名的   java控制器单元测试无法自动连接所需的bean   Java小程序类文件