成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Django 實現 Websocket 廣播、點對點發送消息的代碼

瀏覽:219日期:2024-09-29 16:26:21

1.Django實現Websocket

使用Django來實現Websocket服務的方法很多在這里我們推薦技術最新的Channels庫來實現

1.1.安裝DjangoChannels

Channels安裝如果你是Windows操作系統的話,那么必要條件就是Python3.7

pip install channels

1.2.配置DjangoChannels

1.創建項目ChannelsReady

django-admin startprobject ChannelsReady

2.在項目的settings.py同級目錄中,新建文件routing.py

# routing.pyfrom channels.routing import ProtocolTypeRouterapplication = ProtocolTypeRouter({ # 暫時為空})

3.在項目配置文件settings.py中寫入

INSTALLED_APPS = [ ’channels’]ASGI_APPLICATION = 'ChannelsReady.routing.application'

1.3.啟動帶有Channels提供的ASGI的Django項目

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.Run ’python manage.py migrate’ to apply them.February 01, 2020 - 17:27:13Django version 3.0.2, using settings ’ChannelsReady.settings’Starting ASGI/Channels version 2.4.0 development server at http://0.0.0.0:8000/Quit the server with CTRL-BREAK.

很明顯可以看到ASGI/Channels,這樣就算啟動完成了

1.4.創建Websocket服務

1.創建一個新的應用chats

python manage.py startapp chats

2.在settings.py中注冊chats

INSTALLED_APPS = [ ’chats’, ’channels’]

3.在chats應用中新建文件chatService.py

from channels.generic.websocket import WebsocketConsumer# 這里除了 WebsocketConsumer 之外還有# JsonWebsocketConsumer# AsyncWebsocketConsumer# AsyncJsonWebsocketConsumer# WebsocketConsumer 與 JsonWebsocketConsumer 就是多了一個可以自動處理JSON的方法# AsyncWebsocketConsumer 與 AsyncJsonWebsocketConsumer 也是多了一個JSON的方法# AsyncWebsocketConsumer 與 WebsocketConsumer 才是重點# 看名稱似乎理解并不難 Async 無非就是異步帶有 async / await# 是的理解并沒有錯,但對與我們來說他們唯一不一樣的地方,可能就是名字的長短了,用法是一模一樣的# 最夸張的是,基類是同一個,而且這個基類的方法也是Async異步的class ChatService(WebsocketConsumer): # 當Websocket創建連接時 def connect(self): pass # 當Websocket接收到消息時 def receive(self, text_data=None, bytes_data=None): pass # 當Websocket發生斷開連接時 def disconnect(self, code): pass

1.5.為Websocket處理對象增加路由

1.在chats應用中,新建urls.py

from django.urls import pathfrom chats.chatService import ChatServicewebsocket_url = [ path('ws/',ChatService)]

2.回到項目routing.py文件中增加ASGI非HTTP請求處理

from channels.routing import ProtocolTypeRouter,URLRouterfrom chats.urls import websocket_urlapplication = ProtocolTypeRouter({ 'websocket':URLRouter( websocket_url )})

總結:

下載 注冊到setting.py里的app 在setting.py同級的目錄下注冊channels使用的路由----->routing.py 將routing.py注冊到setting.py 把urls.py的路由注冊到routing.py里 編寫wsserver.py來處理websocket請求

<template> <div> <input type='text' v-model='message'> <p><input type='button' @click='send' value='發送'></p> <p><input type='button' @click='close_socket' value='關閉'></p> </div></template><script>export default { name:’websocket1’, data() { return { message:’’, testsocket:’’ } }, methods:{ send(){ // send 發送信息 // close 關閉連接 this.testsocket.send(this.message) this.testsocket.onmessage = (res) => { console.log('WS的返回結果',res.data); } }, close_socket(){ this.testsocket.close() } }, mounted(){ this.testsocket = new WebSocket('ws://127.0.0.1:8000/ws/') // onopen 定義打開時的函數 // onclose 定義關閉時的函數 // onmessage 定義接收數據時候的函數 // this.testsocket.onopen = function(){ // console.log('開始連接socket') // }, // this.testsocket.onclose = function(){ // console.log('socket連接已經關閉') // } }}</script>

3.廣播消息

3.1客戶端保持不變,同時打開多個客戶端

3.2服務端存儲每個鏈接的對象

socket_list = []class ChatService(WebsocketConsumer): # 當Websocket創建連接時 def connect(self): self.accept() socket_list.append(self) # 當Websocket接收到消息時 def receive(self, text_data=None, bytes_data=None): print(text_data) # 打印收到的數據 for ws in socket_list: # 遍歷所有的WebsocketConsumer對象 ws.send(text_data) # 對每一個WebsocketConsumer對象發送數據

4.點對點消息

4.1客戶端將用戶名拼接到url,并在發送的消息里指明要發送的對象

<template> <div> <input type='text' v-model='message'> <input type='text' v-model='user'> <p><input type='button' @click='send' value='發送'></p> <p><input type='button' @click='close_socket' value='關閉'></p> </div></template><script>export default { name:’websocket1’, data() { return { message:’’, testsocket:’’, user:’’ } }, methods:{ send(){ // send 發送信息 // close 關閉連接 var data1 = {'message':this.message,'to_user':this.user} this.testsocket.send(JSON.stringify(data1)) this.testsocket.onmessage = (res) => { console.log('WS的返回結果',res.data); } }, close_socket(){ this.testsocket.close() }, generate_uuid: function() { var d = new Date().getTime(); if (window.performance && typeof window.performance.now === 'function') { d += performance.now(); //use high-precision timer if available } var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace( /[xy]/g, function(c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16); } ); return uuid; }, }, mounted(){ var username = this.generate_uuid(); console.log(username) this.testsocket = new WebSocket('ws://127.0.0.1:8000/ws/'+ username +'/') console.log(this.testsocket) this.testsocket.onmessage = (res) => { console.log('WS的返回結果',res.data); } // onopen 定義打開時的函數 // onclose 定義關閉時的函數 // onmessage 定義接收數據時候的函數 // this.testsocket.onopen = function(){ // console.log('開始連接socket') // }, // this.testsocket.onclose = function(){ // console.log('socket連接已經關閉') // } }}</script>

4.2服務端存儲用戶名以及websocketConsumer,然后給對應的用戶發送信息

from channels.generic.websocket import WebsocketConsumeruser_dict ={}list = []import jsonclass ChatService(WebsocketConsumer): # 當Websocket創建連接時 def connect(self): self.accept() username = self.scope.get('url_route').get('kwargs').get('username') user_dict[username] =self print(user_dict) # list.append(self) # 當Websocket接收到消息時 def receive(self, text_data=None, bytes_data=None): data = json.loads(text_data) print(data) to_user = data.get('to_user') message = data.get('message') ws = user_dict.get(to_user) print(to_user) print(message) print(ws) ws.send(text_data) # 當Websocket發生斷開連接時 def disconnect(self, code): pass

總結

到此這篇關于Django 實現 Websocket 廣播、點對點發送消息的文章就介紹到這了,更多相關Django 實現 Websocket 廣播、點對點發送消息內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Django
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产一区二区三区久久久| 久久精品日产第一区二区三区| 成人亚洲一区二区一| 国产午夜久久| 欧美疯狂做受xxxx富婆| 国产精品美女www爽爽爽| 九一九一国产精品| 亚洲精选91| 欧美国产欧美亚州国产日韩mv天天看完整| 麻豆一区二区在线| 国产婷婷精品| 成人免费一区二区三区视频| 成人综合激情网| 在线国产亚洲欧美| 一区二区三区四区中文字幕| 国产不卡免费视频| 在线观看国产日韩| 亚洲人成小说网站色在线 | 一区在线免费观看| 日韩欧美国产精品一区| 蜜臀久久99精品久久久久久9| 午夜精品美女久久久久av福利| 欧美三级电影网站| 视频在线在亚洲| 国产欧美日韩亚洲一区二区三区| 中文字幕精品三区| 成人精品在线视频观看| 欧美卡1卡2卡| 日本大胆欧美人术艺术动态| 国产欧美日韩伦理| 亚洲摸摸操操av| 韩国在线视频一区| 久久久久久久久久久电影| 久久99精品国产91久久来源| 久久一二三四| 午夜影视日本亚洲欧洲精品| 在线日本成人| 国产精品天干天干在线综合| 99久久夜色精品国产网站| 欧美天堂一区二区三区| 五月婷婷激情综合| 在线亚洲国产精品网站| 国产精品女上位| 成人小视频免费在线观看| 欧美日本精品一区二区三区| 亚洲免费在线观看| 99精品国产一区二区青青牛奶| 亚洲国产美国国产综合一区二区| 欧美视频精品在线| av电影天堂一区二区在线观看| 中文字幕中文字幕一区| 久久裸体视频| 风间由美中文字幕在线看视频国产欧美| 久久精品人人做| 国产精品主播| 国产一区二区三区在线观看免费 | 老牛嫩草一区二区三区日本 | 欧美电视剧在线观看完整版| 欧美激情精品久久久六区热门| 一区二区三区日韩精品视频| 在线观看网站黄不卡| 国产剧情一区二区| 久久久久久久国产精品影院| 日韩一级在线| 久久国产精品一区二区| 久久久久久久久久久久久久久99 | 久久激情五月激情| 久久综合色8888| 在线视频精品| 国产一本一道久久香蕉| 中文字幕亚洲区| 精品视频在线看| 欧美日韩一区二区高清| 亚洲国产另类av| 欧美精品色综合| 黑人一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美变态tickle挠乳网站| 今天的高清视频免费播放成人| 水野朝阳av一区二区三区| 日韩欧美国产三级| 国产精品永久| 成人国产电影网| 亚洲国产中文字幕在线视频综合| 日韩欧美一级二级| 国产欧美日韩一区二区三区| 国产成人在线观看免费网站| 亚洲免费视频中文字幕| 欧美美女直播网站| 精品不卡视频| 国产成人在线看| 一级精品视频在线观看宜春院| 欧美蜜桃一区二区三区| 黄色亚洲大片免费在线观看| 毛片av一区二区三区| 国产精品天天摸av网| 欧美理论电影在线| 一区二区三区四区五区精品视频| 国产不卡一区视频| 一区二区在线看| 日韩欧美国产wwwww| 一本综合久久| 成人精品视频网站| 亚州成人在线电影| 久久久久久久久久看片| 欧美在线视频日韩| 黄色精品免费| 国产乱一区二区| 亚洲高清中文字幕| 久久久无码精品亚洲日韩按摩| 久久综合九色综合久99| 欧美一区亚洲| 老司机免费视频一区二区三区| 国产精品美女久久久久久久久久久 | 成人午夜又粗又硬又大| 亚洲18女电影在线观看| 中文字幕av不卡| 日韩欧美国产一区二区在线播放| 久久久久久久久久久久久久一区| 欧美91视频| 国产91清纯白嫩初高中在线观看| 日韩av一区二区三区| 亚洲情趣在线观看| 久久久www成人免费毛片麻豆 | 亚洲人成网站影音先锋播放| 91精品国产综合久久精品图片 | 欧美中文字幕一二三区视频| 尹人成人综合网| 91视频一区二区三区| 国产精品99久久久| 捆绑紧缚一区二区三区视频| 亚洲国产精品麻豆| 亚洲人123区| 中文字幕免费不卡| 欧美精品一区在线观看| 欧美群妇大交群中文字幕| 巨乳诱惑日韩免费av| 9色国产精品| 国产在线欧美日韩| av电影在线观看一区| 国产一区二区三区精品视频| 日韩黄色小视频| 亚洲综合区在线| 中文字幕日韩精品一区 | 日本va欧美va瓶| 亚洲国产你懂的| 亚洲午夜在线观看视频在线| 日韩美女视频19| 亚洲欧美综合色| 国产欧美日韩在线看| 精品99一区二区| 欧美一区二区不卡视频| 精品视频资源站| 欧美三级电影一区| 91久久精品一区二区三| 模特精品在线| 亚洲欧美视频| 亚洲一区二区高清视频| 在线午夜精品| 一区二区av| 亚洲第一黄网| 亚洲人成免费| 99香蕉国产精品偷在线观看| 亚洲精品孕妇| 中文久久精品| 一区二区三区国产盗摄| 日韩一区二区久久| 国产日韩1区 | 麻豆精品在线观看| 日韩二区三区在线观看| 午夜精品影院在线观看| 亚洲五码中文字幕| 亚洲成人在线网站| 午夜精品久久久久久久99樱桃| 午夜欧美2019年伦理| 日韩黄色免费电影| 麻豆国产欧美日韩综合精品二区| 久久精品久久久精品美女| 秋霞电影网一区二区| 琪琪一区二区三区| 蜜乳av一区二区三区| 麻豆国产欧美一区二区三区| 久久99热99| 国产99久久久国产精品潘金网站| 国产福利一区二区三区| 成人ar影院免费观看视频| 91小视频在线免费看| 欧美成人日韩| 雨宫琴音一区二区在线| 亚洲视频成人| 久热re这里精品视频在线6| 欧美制服丝袜第一页| 欧美片在线播放| 日韩一区二区免费在线电影| 精品福利二区三区| 国产精品视频免费看| 一片黄亚洲嫩模| 日韩av中文在线观看| 国产一区二区精品久久99| 成人av在线资源|