支持Django的请求/响应生命周期来自动处理WebSocket消息。
项目描述
# django-websocket-request
[](https://travis-ci.org/GetBlimp/django-websocket-request) [](http://badge.fury.io/py/django-websocket-request)
## 概述
此包提供了对传输无关的路由的支持,以允许Django的请求/响应生命周期自动处理WebSocket消息。它从[Sails.js](http://sailsjs.org/)借用了WebSocket消息格式。
## 安装
使用`pip`安装...
```
$ pip install django-websocket-request
```
## 使用方法
### ws.py
```python
# 设置Django环境
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings'
from wsrequest import WebSocketRequest
message = '{"method": "GET", "url": "/api/projects/"}'
request = WebSocketRequest(message)
response = request.get_response()
print(response.content)
```
### WebSocket消息格式
方法键可以是任何HTTP方法:GET、POST、PUT、DELETE、PATCH、HEAD或OPTIONS。url键是不带域名的绝对URL。data键是一个可选的字典,其中的键值对用于创建方法的请求数据。token键也是可选的,用于重新创建HTTP授权头,Authorization: JWT YOUR_TOKEN_HERE。如果你使用Django REST框架,你可能想查看[django-rest-framework-jwt](https://github.com/GetBlimp/django-rest-framework-jwt)。
```json
{
"method": "POST",
"url": "/api/companies/",
"data": {
"name": "Acme Inc."
},
"token": "MY_JSON_WEB_TOKEN"
}
```
## 实时演示
查看[GetBlimp/django-websocket-request-example](https://github.com/GetBlimp/django-websocket-request-example)以获取示例实现和实时演示。
## 使用sockjs + tornado的示例实现
```python
import os
import json
from tornado import web, ioloop
from sockjs.tornado import SockJSRouter, SockJSConnection
# 设置Django环境
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings'
from wsrequest import WebSocketRequest
class RESTAPIConnection(SockJSConnection)
def on_open(self, info)
self.send(json.dumps({'connected': True}))
def on_message(self, data)
response = WebSocketRequest(data).get_response()
self.send(response.content)
if __name__ == '__main__'
导入logging
port = 8080
logging.getLogger().setLevel(logging.INFO)
Router = SockJSRouter(RESTAPIConnection, '/ws/api')
app = web.Application(Router.urls)
app.listen(port)
logging.info(" [*] 正在监听 0.0.0.0:{}".format(port))
ioloop.IOLoop.instance().start()
```
[](https://travis-ci.org/GetBlimp/django-websocket-request) [](http://badge.fury.io/py/django-websocket-request)
## 概述
此包提供了对传输无关的路由的支持,以允许Django的请求/响应生命周期自动处理WebSocket消息。它从[Sails.js](http://sailsjs.org/)借用了WebSocket消息格式。
## 安装
使用`pip`安装...
```
$ pip install django-websocket-request
```
## 使用方法
### ws.py
```python
# 设置Django环境
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings'
from wsrequest import WebSocketRequest
message = '{"method": "GET", "url": "/api/projects/"}'
request = WebSocketRequest(message)
response = request.get_response()
print(response.content)
```
### WebSocket消息格式
方法键可以是任何HTTP方法:GET、POST、PUT、DELETE、PATCH、HEAD或OPTIONS。url键是不带域名的绝对URL。data键是一个可选的字典,其中的键值对用于创建方法的请求数据。token键也是可选的,用于重新创建HTTP授权头,Authorization: JWT YOUR_TOKEN_HERE。如果你使用Django REST框架,你可能想查看[django-rest-framework-jwt](https://github.com/GetBlimp/django-rest-framework-jwt)。
```json
{
"method": "POST",
"url": "/api/companies/",
"data": {
"name": "Acme Inc."
},
"token": "MY_JSON_WEB_TOKEN"
}
```
## 实时演示
查看[GetBlimp/django-websocket-request-example](https://github.com/GetBlimp/django-websocket-request-example)以获取示例实现和实时演示。
## 使用sockjs + tornado的示例实现
```python
import os
import json
from tornado import web, ioloop
from sockjs.tornado import SockJSRouter, SockJSConnection
# 设置Django环境
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings'
from wsrequest import WebSocketRequest
class RESTAPIConnection(SockJSConnection)
def on_open(self, info)
self.send(json.dumps({'connected': True}))
def on_message(self, data)
response = WebSocketRequest(data).get_response()
self.send(response.content)
if __name__ == '__main__'
导入logging
port = 8080
logging.getLogger().setLevel(logging.INFO)
Router = SockJSRouter(RESTAPIConnection, '/ws/api')
app = web.Application(Router.urls)
app.listen(port)
logging.info(" [*] 正在监听 0.0.0.0:{}".format(port))
ioloop.IOLoop.instance().start()
```
项目详情
关闭
django-websocket-request-0.1.1.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 3daadc93a75a9542f83d6e6d267e2626afc1e687fb3d3aae345419f84244175a |
|
MD5 | c26a28979bcbee731cfcd270e563a24f |
|
BLAKE2b-256 | 408e3053f9c4b4d887e5983a74483d4ac37dcdaae1c827da30764bc4ac3b23ae |
关闭
django_websocket_request-0.1.1-py2.py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0c610e06c4c31dead4f63c9f048e4648a1c8f6d2459fe182c9955d0638fb6998 |
|
MD5 | be565bbac261ce960be41e97862bb1f8 |
|
BLAKE2b-256 | f189acc7bfc7267b06832d00553d2277483b2256d2839826ef84ba95f4c9692b |