跳转到主要内容

支持Django的请求/响应生命周期来自动处理WebSocket消息。

项目描述

# django-websocket-request

[![构建状态](https://travis-ci.org/GetBlimp/django-websocket-request.png?branch=master)](https://travis-ci.org/GetBlimp/django-websocket-request) [![PyPI版本](https://badge.fury.io/py/django-websocket-request.png)](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 (9.3 kB 查看散列值)

上传时间

构建分发

django_websocket_request-0.1.1-py2.py3-none-any.whl (10.4 kB 查看散列值)

上传时间 Python 2 Python 3

由以下支持