采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
dephne服务正常启动了 如图 nginx 也配置了,没有报错 如图 但是前端访问就找不到 ws路径 在本地测试没有问题,用服务器部署才出这个错,实在找不出问题
用户登录了吗?http web正常吗?
可以按照以下这个思路来:
第一步
WebSocket连接是否成功,检查请求头、响应头、状态码
1.前端WebSocket API使用错误,未正确发送连接,常见的连接地址写错,JS语法错误,未正确引用Reconnecting-websocket.js文件
2.onsumers.py中接收WebSocket连接代码错误,检查connect方法,或者routing.py中路由是否匹配
第二步
是否能接收到WebSocket消息,使用chrome浏览器,选中WS,点击建立的连接,看Frames,用其它浏览器和其它用户登录,触发消息通知,看是否有数据
1.模型类或视图中调用get_channle_layers的时候,payloay有没有传递给consumers.py中对应的方法(WebSocket连接对应的Consuemr类)
2.consumers.py中self.send()方法,数据发送给前端时出错
3.前端WebSocket API中onmessage方法,没有正确解析event.data,可以使用console.log()测试
第三步
Frames能看到WebSocket消息,就是没通知提示
到这一步,就只剩js对html标签操作的错误了。对于点赞数和评论数的更新,看下update_social_activity函数是否发送了post请求
WebSocket连接没有成功,但是uwsgi 拉动起来的django能正常返回数据,就是ws://xxxxxx/ws/xxx 这种请求 nginx不知道如何处理,但是nginx已经按照文档中的配置了 location /ws/ {xxxxxxx} 也在对应的端口启动了dephne服务,但好像就是路由不过来
主要是 runserver 运行是没有问题的,ws能正常运行,但是用uwsgi+nginx部署,http部分和静态资源都没问题,就是ws不行了........
nginx error日志有报错吗?就是说nginx转发了/ws/到daphne,问题出在daphne对吗?
那像是部署除了问题。你可以这样分步来,别用supervisor去启daphne和uwsgi,用命令启动daphne
/usr/local/python3/bin/daphne -p 8000 config.asgi:application
和uwsgi
/usr/local/python3/bin/uwsgi --ini /etc/uwsgi.ini
nginx还是正常启动和配置。注意debug=False,启动elasticsearch,redis。这时候你前端访问并登陆,看命令行启动的daphne报了啥
登录后可查看更多问答,登录/注册
融合Django高级用法/算法/设计模式/TestCase测试/云计算打造项目
2.5k 15
7.5k 1
2.3k 6
1.6k 4
1.8k 2