.Press 安装WSS以及WSS规范

 

目录

安装 

1.改nginx.conf

 2.改 uwsgi.ini

3.改Django

 4.安装dwebsocket

WSS规范

1.概览

#Python def部分

#Vue js部分 


安装 

*以下的修改需要配合uwsgi,nginx的重启一起。 

1.改nginx.conf

uwsgi提供了一个端口,可以看做为Python工作区。而nginx.conf决定哪些可以进入(怎样进入)工作区。

将网址 /wss 的访问以 upgrade 的形式 扔到 uwsgi 端口。

而 “/” (全网站主要内容)则将以一般形式 扔到 uwsgi 端口。

两者都是用uwsgi_pass​​​​​到 uwsgi身后的Python工作区的。

location /wss {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3389; #与https的“/”保持一致
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

 2.改 uwsgi.ini

当增加以下内容后,运行 uwsgi --ini 将会看到提示,其中以下三者都会出现在提示里面。

这是为uwsgi配置异步核心(此处30个cores)。 

async = 30
ugreen = ''
http-timeout = 300

3.改Django

在settings.py加入以下声明。让uwsgi代理的wss指令能够被django解读。

WEBSOCKET_FACTORY_CLASS = 'dwebsocket.backends.uwsgi.factory.uWsgiWebSocketFactory'

 4.安装dwebsocket

pip3 install dwebsocket

修改settings.py,在INSTALLED_APPS 里添加 

 'dwebsocket',

然后在py的空白区添加

WEBSOCKET_ACCEPT_ALL=True   # 可以允许每一个单独的视图实用websockets

WSS规范

1.概览

#Python def部分

WSS的开发与普通https的Ajax.py一样,实际上WSS只是一个ajax def。

 使用require,当用https访问时,会返回400错误。并无必要将wss方法用一般https访问,故用require阻止https访问即可

from dwebsocket.decorators import require_websocket
@require_websocket
def wsstest(request):
	request.websocket.send(''.encode('utf-8'))   

聊天室群发的关键是保存客户端的ws对象 ,再用 for 循环逐个发送。 

var citizens = {}
var citizenlist = {}
citizens[citizenid] = request.websocket
citizenlist.push(citizenid)
for citizenid in citizenlist:
    citizens[citizenid].send()

send可以发送json ,在send函数里加入。

json.dumps({"msg":}).encode("'utf-8'")

#Vue js部分 

在Vue代码里建立实例,其地址和https匹配 django 的 urls.py 的方法一致。 但是必须是在nginx里面设定过可upgrade的目录(例如/wss 目录)

var ws = new WebSocket("wss://unitedfront.press/wss");

 通常在open时发送自己的citizenid。

ws.onopen = function () {
    ws.send("");
};

最重要的部分,接收wss-def发送的信息。与ajax类似。

ws.onmessage = function (res) {
    var msg = res.data;
};

在退出浏览器或其它行为关闭WebSocket时,告知浏览器将自己的身份注销。 

ws.onclose = function () {
    ws.send("");
 };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值