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流收集组合器   文件如何在java中逐个压缩选定的多个文件夹   从Google存储下载数据时发生java SocketTimeoutException   java在安卓应用程序客户端上从python服务器接收值,然后显示与该值对应的mysql数据   数组如何在Java中测试字符串索引是否为Null   java将一串值拆分并放入一个表中   java Spring Memcached注释不缓存   调用pom中设置的环境变量时出现java问题。xml surefire插件   java修复JFrame中重叠的鼠标侦听器   格式化java。sql。日期至yyyyMMdd   java声音剪辑。如果剪辑不正确,isActive应返回true。启动被调用   无根计算机上hadoop中的java格式化namenode   从字符串数组中删除重复项,而无需在Java中进行显式比较   java Eclipse插件安装错误   java webdriver无法在firefox中单击超链接   动画错误。朗。反思。调用目标异常   java试图调用虚拟方法“void”。小装置。编辑文本。在空对象引用上添加TextChangedListener(安卓.text.TextWatcher)”