您好,登錄后才能下訂單哦!
話不多說先上效果圖演示
項目:http://112.74.164.107:9990/
1、安裝組建
redis: yum install redis/apt install redis
2、創建虛擬化環境并進入
python3/python -m venv venv
source venv\bin\active
3、安裝第三方庫
pip install -r requirements.txt
4、初始化
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic
5、啟動服務
gunicorn -w 5 -k gevent -b 0.0.0.0:9990 webchat.wsgi
6、訪問
瀏覽器訪問http://ip:9990
整個項目中涉及的思路和知識點我們在這里都一一分解為大家詳細解說如下:
Django :一個可以使 Web 開發工作愉快并且高效的 Web 開發框架,能夠以最小的代價構建和維護高質量的 Web 應用
框架:軟件開發工程師從日常的重復勞動中總結出快速的、模塊化的、安全的軟件開發模式
Django 是 Python 開發者的最佳 Web 框架
Object Relation Mapping (關系對象映射)
開發者可為使用 Django 提供的 send_mail 函數發送郵件
使用方法
配置郵箱(setting.py)
發送
send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None)
注: django 發送郵件封裝 python smtplib 模塊,smtplib 使用方 法: https://github.com/imsilence/packages/blob/master/python/mailclient.py
實現用戶認證機制
是什么?
WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進行全雙工通訊的協議
為什么需要?
HTTP 協議是一種無狀態的、無連接的、單向的應用層協議。它采用了請
求/響應模型。通信請求只能由客戶端發起,服務端對請求做出應答處理
弊端: HTTP 協議無法實現服務器主動向客戶端發起消息。
傳統模式下, Web 應用程序通過頻繁的 ajax 請求實現長輪詢( 輪詢是在 特定的時間間隔(如每1秒),由瀏覽器對服務器發出 HTTP 請求,然后由 服務器返回最新的數據給客戶端的瀏覽器)
缺點:輪詢的效率低,非常浪費帶寬等資源(瀏覽器需要不斷的向服務器
發出請求)
如何工作?
Web 瀏覽器和服務器都必須實現 WebSockets 協議來建立和維護連 接,由于 WebSockets 連接長期存在,與典型的 HTTP 連接不同,對 服務器有重要的影響(任何 WebSockets 服務器都需要實現為異步服 務器,基于多線程或多進程的服務器無法適用于 WebSockets,因為 它旨在打開連接,盡可能快地處理請求,然后關閉連接)
在 WebSocket 協議中, 瀏覽器和服務器只需要做一個握手的動作,然后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。
如何使用?
客戶端 API (javascript)
1、創建 websocket 對象
var ws = new WebSocket(url, [protocol] );
2、屬性
ws.readyState 表示連接狀態
可選值:
0: 表示連接尚未建立。
1: 表示連接已建立,可以進行通信。
2: 表示連接正在進行關閉。
3: 表示連接已經關閉或者連接不能打開。
ws.bufferedAmount 表示已被 send() 方法放入正在隊列中等待傳輸,但是還沒有發 出的 UTF-8 文本字節數
3、事件
4、方法
send ws.send() 使用連接發送數據
close ws.close() 關閉連接
dwebsocket 模塊為 django 提供了 WebSocket 協議的實現
使用
1、安裝
pip install dwebsocket
2、用法
使用 accept_websocket 或 require_websocket 裝飾器修飾 view
獲取 websocket 連接對象
獲取數據
發送數據
其他
Redis 是一個開源的,基于內存的,可持久化的,K-V 數據庫
用途:
發布訂閱:是一種消息通信模式,發送者(pub)發送消息,縮 影訂閱者(sub)都可以接收消息并處理
1、在 redis 客戶端中使用
2、在 python 中使用
redis 模塊
訂閱
發布:
代碼結構
app 定義(app.py)
配置(settings.py)
配置訪問地址
啟用 app
配置模版路徑
配置時區和國際化
配置靜態資源路徑
配置郵箱
流程
1、打開登錄頁面
2、發送驗證碼
3、登錄
流程
創建 websocket 連接到 msg/,同時注冊 open, error, message 事件
當連接創建,調用 websocket.send 發送上線消息
用戶填寫消息,點擊按鈕,調用 websocket.send 方法發送聊天消息
urls.py 處理 url msg/ 到視圖 msg
msg 視圖接收和處理 websocket 消息,同時監聽和處理 redis 訂閱的 消息
路由處理(view.py)
消息顯示處理(index.html)
想要源碼的請留言或者私信博主
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。