什么是WebSocket
簡介
WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。它實現(xiàn)了瀏覽器與服務(wù)器雙向通信,即允許服務(wù)器主動發(fā)送信息給客戶端。因此,在WebSocket中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進行雙向數(shù)據(jù)傳輸,客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單。
WebSocket的優(yōu)勢
現(xiàn)在,很多網(wǎng)站為了實現(xiàn)推送技術(shù),所用的技術(shù)都是Ajax輪詢。輪詢是在特定的時間間隔(如每1秒),由瀏覽器對服務(wù)器發(fā)出HTTP請求,然后由服務(wù)器返回最新的數(shù)據(jù)給客戶端的瀏覽器。
這種傳統(tǒng)的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務(wù)器發(fā)出請求。然而HTTP請求可能包含較長的頭部,其中真正有效的數(shù)據(jù)可能只是很小的一部分,顯然這樣會浪費很多的帶寬等資源。HTML5定義的WebSocket協(xié)議優(yōu)勢如下:
- 小Header:互相溝通的Header非常小,只有2Bytes左右。
- 服務(wù)器不再被動接收到瀏覽器的請求之后才返回數(shù)據(jù),而是在有新數(shù)據(jù)時就主動推送給瀏覽器。
- WebSocket協(xié)議能更好的節(jié)省服務(wù)器資源和帶寬,并且能夠更實時地進行通訊。
WebSocket可以幫助兩端或多端接入的用戶實時傳遞信息可以簡單的實現(xiàn)一個聊天室,既可以是
一對一的聊天也可以是多對多的聊天。舉個例子:我們在看直播的時候的實時彈幕就可以通過WebSocke實現(xiàn),以及我們在微信上和某個人聊天的場景也可以通過WebSocke實現(xiàn)
我們要想通過django和實現(xiàn)聊天首先我們還需要借助一個工具來幫助我們實現(xiàn),使用channels可以讓你的Django應(yīng)用擁有實時通訊和給用戶主動推送信息的功能。
準(zhǔn)備階段
django配置
1、安裝指定版本的包
pip install channels==2.1.3
pip install channels_redis
2、注冊channels
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'corsheaders',
'channels',
'drf_yasg2',
]
3、在setting中配置asgi
這里為什么用asgi不用wsgi,因為wsgi不支持websocket通信。以及配置redis數(shù)據(jù)庫
WSGI_APPLICATION = '項目名.wsgi.application'
ASGI_APPLICATION = '項目名.asgi.application'
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('127.0.0.1', 6379)],
},
},
}
4、修改asgi.py文件文章來源:http://www.zghlxwxcb.cn/news/detail-422622.html
? ? ? ? 需要注意的是,django版本小于3.0.0的話,需要自己創(chuàng)建一個asgi.py文件,django版本大于3.0.0就不用擔(dān)心此問題,只需要修改asgi.py文件中的某些代碼即可文章來源地址http://www.zghlxwxcb.cn/news/detail-422622.html
"""
ASGI config for shixun project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/
到了這里,關(guān)于Django實現(xiàn)websocket聊天室的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!