Django実現websocket
1885 ワード
django実装websocketには大きく2つの方法があり、1つはchannelsであり、1つはdwebsocketである.channelsはredis,twistedなどに依存し,dwebsocketを用いるより便利である.
インストール:
pip install dwebsocket
構成:
簡単な使用:シミュレーションファイルのダウンロードの簡単な例
詳細:
dwebsocketには2つの装飾器があります:require_Websocketとaccept_Websocekt、requireを使用Websocket装飾器は、ビュー関数が正常なhttpリクエストを受信できないため、accept_を使用するのが一般的です.Websocket方式でいいのですが、
dwebsocketのいくつかの組み込み方法:
request.is_Websocket():リクエストがWebsocket方式であるか否かを判断し、trueを返す.そうでない場合false request.websocketを返す.要求がwebsocketである場合、requestにwebsocket属性が追加され、WebSocket.wait()はクライアントから送信されたメッセージを返し、メッセージが受信されないとWebSocket.readがブロックされる()waitと同様に返されるメッセージを受け入れることができるが、これは非ブロックであり、None WebSocket.count_messages()返されるメッセージの数がないWebSocket.has_messages()返される新しいメッセージが来るかどうかWebSocket.send(message)クライアントのようにメッセージを送信し、messageはbyteタイプである
インストール:
pip install dwebsocket
構成:
INSTALLED_APPS = [
.....
.....
'dwebsocket',
]
MIDDLEWARE_CLASSES = [
......
......
'dwebsocket.middleware.WebSocketMiddleware' # URL websocket,
]
WEBSOCKET_ACCEPT_ALL=True # websockets
簡単な使用:シミュレーションファイルのダウンロードの簡単な例
from dwebsocket.decorators import accept_websocket
@accept_websocket
def test(request):
if not request.is_websocket(): # websocket
return render(request, 'websocket.html')
else:
download = Haproxy()
t = threading.Thread(target=download.run)
t.start()
sent = []
while download.status:
if len(download.res_dict) > len(sent):
for i in download.res_dict.keys():
if i not in sent:
sent.append(i)
request.websocket.send(str(sent[-1]+str(download.res_dict[sent[-1]])).encode('utf-8')) #
if not download.status:
request.websocket.send(' '.encode('utf-8'))
詳細:
dwebsocketには2つの装飾器があります:require_Websocketとaccept_Websocekt、requireを使用Websocket装飾器は、ビュー関数が正常なhttpリクエストを受信できないため、accept_を使用するのが一般的です.Websocket方式でいいのですが、
dwebsocketのいくつかの組み込み方法:
request.is_Websocket():リクエストがWebsocket方式であるか否かを判断し、trueを返す.そうでない場合false request.websocketを返す.要求がwebsocketである場合、requestにwebsocket属性が追加され、WebSocket.wait()はクライアントから送信されたメッセージを返し、メッセージが受信されないとWebSocket.readがブロックされる()waitと同様に返されるメッセージを受け入れることができるが、これは非ブロックであり、None WebSocket.count_messages()返されるメッセージの数がないWebSocket.has_messages()返される新しいメッセージが来るかどうかWebSocket.send(message)クライアントのようにメッセージを送信し、messageはbyteタイプである