websocket是什么
WebSocketd是WebSocket的守护进程(命令行工具),负责处理WebSocket连接,并启动服务器应用程序来处理WebSockets,在应用程序和Web浏览器之间传递消息,无需任意依赖包且进程独立。WebSocketd是一款非常特别的WebSocket服务器,它的最大特点是后台脚本不限语言,其标准输入stdin就是WebSocket的输入,标准输出stdout就是WebSocket的输出。
WebSocketd本质上是命令行的WebSocket代理,只要在命令行可以执行的程序,都可以通过它与浏览器进行WebSocket通信。
后端views
import json
from dwebsocket.decorators import accept_websocket
ws_dict = {
} # 存所有客户的 客户端对象
kf_dict = {
}
ws_set = set()
@accept_websocket
def chat(request):
print('建立ws链接')
ws = request.websocket
ua = request.headers.get('user-agent')
ip = request.META.get('REMOTE_ADDR')
ws_id = '%s_%s' % (ip, ua)
ws_dict[ws_id] = ws
for data_ in ws: # 当ws给服务端发消息的时候, 就取到一个数据
# 处理每次收到的消息
data = json.loads(data_.decode()) # 发送的是json数据
print(data)
action = data.get('action') # 数据用途, 动作,
if action == 'all_ws':
# 获取所有的客户, 客服用这个功能
ws_list = list(ws_dict.keys())
msg = json.dumps({
'action': 'all_ws', 'ws_list': ws_list})
ws.send(msg