Django的WebSocket服务器

django-ws4ever的Python项目详细描述


=====
django-ws4ever
=====



gevent websocket handler


quick start
--
1。安装:

pip install django_ws4ever



2.将“ws4ever”添加到已安装的应用程序设置中,如下所示:


已安装的应用程序=[

“ws4ever”,
]


3。完成自己的websocket处理程序类:

from ws4ever.views import basewebsocketapplication
class websocketclientapplication(basewebsocketapplication):
def init(self,ws):
pass

def handle(self,kind,payload=none):
pass

4。设置websocket配置路径::

检查僵尸websocket连接的间隔
“通知后端”:“redis://:password@redis host:redis_port/db_id'”或“内存”
}


5。在manage.py中的patch gevent::
在任何python代码之前准备这些代码,可能在gevent import monkey;monkey.patch(thread=false)的第2行

6中。runserver
python manage.py runserver

7.在js中测试websocket::

var ws=new websocket(“ws://localhost:8000/ws”);
ws.on open=function()
{
console.log(“on open”);
ws.send(json.stringify({kind:'kind',payload:'payload'}));
};
ws.onMessage=function(evt)
{
var received_msg=evt.data;
console.log(“接收消息”,已接收消息);
};
ws.onclose=function()
{
console.log(“连接已关闭…”);
};


8。[可选]如果要使用wsgi运行websocket(ig.use gunicorn),则像这样配置wsgi
8.1 config project wsgi.py::

append to tail,必须在os.environ.setdefault(“django设置”模块)之后,“xx.settings”)
gunicorn useposket wsgi
来自geventwebsocket import resource
来自ws4ever.helpers import get撸websocket撸sources
ws撸application=resource(get撸websocket撸sources())

8.2运行gunicorn like::

更换端口
`gunicorn-k“geventwebsocket.gunicorn.workers.geventwebsocketworker”django-ws4ever.wsgi:ws-u application--bind 127.0.0.1:8001`


9。[可选/高级]广播和接收消息
9.1配置广播后端:
您可以通过redis或内存发送通知。
通过redis,您可以向多个进程发送通知;通过内存,您只能在当前进程中发送通知。
您应该在开发环境中使用内存,在生产环境中使用redis。
在设置中。py::


“通知后端”:“redis://:password@redis host:redis-port/db-id”或“内存”
}

9.2可以发送广播作者:

from ws4ever.redis import notify_clients
notify_clients('kind','payload',extra_field='extra_value',extra_field2=“extra_value2”)

9.3然后可以处理您在上述步骤3中创建的websocketclientapplication中的消息:


class websocketclientapplication(basewebsocketapplication):


@classmethod

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

推荐PyPI第三方库


热门话题
servlets Java EE+GlassFish:如果用户在其他地方登录,则强制用户注销   java在不更改源代码的情况下添加钩子   安卓 Java TextView Onclick()返回表达式错误   java Excel文件未使用Apache存储内部内存   java getRowCount()和getSelectedColumn()不起作用   无法在java中生成视图绑定。util。Android Gradle插件2.1的NoTouchElementException   Java中的类型转换运算符百分比计算为零   主java中的调用方法   java在Javasound中播放多个示例   java如何知道webDriver成功打开URL   java jmock,每次调用时返回新对象   eclipse使用Java在Selenium WebDriver中生成可执行文件   macos捆绑Java OS X应用程序默认为MacRoman编码   java我应该把我的休息网关变成一个图书馆吗?   java Eclipse插件:查找包含子字符串的行号无效   Java IOException:在Linux上发送UDP数据包时没有可用的缓冲区空间   java无法解析jaxbxjc2中的名称“xjc:globalJavaType”。2.52.罐子   java是否有HibernateAPI来检查是否创建了数据库?