国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Django實現(xiàn)websocket聊天室

這篇具有很好參考價值的文章主要介紹了Django實現(xiàn)websocket聊天室。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

什么是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文件

? ? ? ? 需要注意的是,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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java+Vue實現(xiàn)聊天室(WebSocket進階-聊天記錄)

    Java+Vue實現(xiàn)聊天室(WebSocket進階-聊天記錄)

    WebSocket 是一種在單個TCP連接上進行全雙工通信的協(xié)議。WebSocket通信協(xié)議于2011年被IETF定為標(biāo)準(zhǔn)RFC 6455,并由RFC7936補充規(guī)范。WebSocket API也被W3C定為標(biāo)準(zhǔn)。 WebSocket使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,允許服務(wù)端主動向客戶端推送數(shù)據(jù)。在WebSocket API中,瀏覽器和服

    2024年02月11日
    瀏覽(111)
  • websocket+elementui+vue實現(xiàn)簡易聊天室

    websocket+elementui+vue實現(xiàn)簡易聊天室

    搭建服務(wù)端環(huán)境 安裝socket.io 服務(wù)端基于node,js的express框架生成,所以寫成模塊,引入至app.js中 其中,io.sockets.emit用于向所有建立連接的客戶端發(fā)送信息,socket.broadcast.emit用于向除發(fā)送方之外的客戶端發(fā)送信息。 客戶端基于vue和elementui 進入聊天頁面后,先判斷用戶是否登錄,

    2024年04月25日
    瀏覽(37)
  • 基于springboot與websocket實現(xiàn)簡易聊天室

    基于springboot與websocket實現(xiàn)簡易聊天室

    創(chuàng)建一個簡單聊天室的HTML和JavaScript代碼,匹配相應(yīng)的css樣式,這個聊天室將使用WebSocket技術(shù),允許用戶實時發(fā)送和接收消息。 1.1 html和js代碼 通過new WebSocket(url)建立一個新的websocket連接。websocket連接建立之后使用websocket.onopen,websocket.onclose,websocket.onerror等方法實時監(jiān)測we

    2024年02月01日
    瀏覽(26)
  • websocket實現(xiàn)聊天室(vue2 + node)

    websocket實現(xiàn)聊天室(vue2 + node)

    需求分析如圖: 搭建的項目結(jié)構(gòu)如圖: 前端步驟: vue create socket_demo (創(chuàng)建項目) views下面建立Home , Login組件 路由里面配置路徑 Home組件內(nèi)部開啟websocket連接 前端相關(guān)組件代碼: Login組件 Home組件 router/index.js 后端步驟: 在項目外層創(chuàng)建server文件夾(src目錄同級) npm init -y創(chuàng)建

    2024年01月22日
    瀏覽(102)
  • 基于WebSocket的簡易聊天室的基本實現(xiàn)梳理

    基于WebSocket的簡易聊天室的基本實現(xiàn)梳理

    目前在很多網(wǎng)站為了實現(xiàn)推送技術(shù)所用的技術(shù)都是 Ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對服務(wù)器發(fā)出HTTP請求,然后由服務(wù)器返回最新的數(shù)據(jù)給客戶端的瀏覽器。HTTP 協(xié)議是一種無狀態(tài)的、無連接的、單向的應(yīng)用層協(xié)議。它采用了請求/響應(yīng)模型。通信

    2024年02月11日
    瀏覽(24)
  • SpringBoot與webSocket實現(xiàn)在線聊天室——實現(xiàn)私聊+群聊+聊天記錄保存

    SpringBoot與webSocket實現(xiàn)在線聊天室——實現(xiàn)私聊+群聊+聊天記錄保存

    引用參考:原文章地址:https://blog.csdn.net/qq_41463655/article/details/92410518 在此基礎(chǔ)上實現(xiàn)對聊天記錄的保存。 代碼地址:鏈接:https://pan.baidu.com/s/1IJFZDa4S_DF08773sKJWeA 提取碼:jkui 思路:新建一個實體類用于保存聊天記錄,在消息發(fā)送時,設(shè)置對象的各個值然后保存到數(shù)據(jù)庫中。

    2024年02月02日
    瀏覽(88)
  • Springboot + Websocket的集成實現(xiàn)簡單的聊天室功能

    Springboot + Websocket的集成實現(xiàn)簡單的聊天室功能

    WebSocket是一種網(wǎng)絡(luò)通信協(xié)議,它可以在單個TCP連接上實現(xiàn)雙向(全雙工)通信。WebSocket使用HTML5標(biāo)準(zhǔn),并且可以在客戶端和服務(wù)器之間建立持久連接,這意味著連接在瀏覽器刷新或關(guān)閉后仍然保持打開狀態(tài)。 WebSocket的主要優(yōu)點包括: 1. 雙向通信:WebSocket支持客戶端和服務(wù)器之

    2024年03月21日
    瀏覽(27)
  • SpringBoot和Vue2集成WebSocket,實現(xiàn)聊天室功能

    springboot集成websocket實現(xiàn)聊天室的功能。如有不足之處,還望大家斧正。

    2024年01月23日
    瀏覽(27)
  • 基于 SpringBoot+WebSocket 無DB實現(xiàn)在線聊天室(附源碼)

    基于 SpringBoot+WebSocket 無DB實現(xiàn)在線聊天室(附源碼)

    0.1 樣例展示 0.2 源碼地址 GitHub:https://github.com/ShiJieCloud/web-chat Gitee:https://gitee.com/suitbaby/web-chat GitCode:I’m Jie / web-chat · GitCode 1.1 HTTP 常用的 HTTP 協(xié)議是一種無狀態(tài)的、無連接的、單向的應(yīng)用層協(xié)議。它采用了請求/響應(yīng)模型。通信請求只能由客戶端發(fā)起,服務(wù)端對請求做出

    2024年02月05日
    瀏覽(17)
  • Spring boot 項目(二十三)——用 Netty+Websocket實現(xiàn)聊天室

    Spring boot 項目(二十三)——用 Netty+Websocket實現(xiàn)聊天室

    Netty 是基于 Java NIO 的異步事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架,使用 Netty 可以快速開發(fā)網(wǎng)絡(luò)應(yīng)用,Netty 提供了高層次的抽象來簡化 TCP 和 UDP 服務(wù)器的編程,但是你仍然可以使用底層的 API。 Netty 的內(nèi)部實現(xiàn)是很復(fù)雜的,但是 Netty 提供了簡單易用的API從網(wǎng)絡(luò)處理代碼中解耦業(yè)務(wù)邏輯。

    2023年04月15日
    瀏覽(88)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包