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
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