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第三方库


热门话题
java播放流媒体音乐   LWJGL中的java纹理未显示   java从父集合中删除时删除子对象   mysql希望在我的代码中添加验证,如果表不存在,它应该用java创建新表   java我可以关闭客户端的socket而不引起服务器端的EOFEException吗?   java Primefaces对话框框架咆哮和showMessageInDialog不工作   hadoop配置单元无法初始化类java。网网络接口   关键字中缺少oracle11g Java iBatis   java在RESTAPI中创建PUT和POST端点,而不创建GET端点?   java Math abs和ceil输出编译错误   java Tomcat 8.017代md5及其摘要。球棒   java SpringBean配置xml文件在IteliJ Idea中加载   java为什么在使用Powershell指定Xms和Xmx时,它们什么都不做,但通过Netbeans IDE可以正常工作?   java Drools项目构建失败,kjar打包从7.7版开始