黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

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

Django使用channels + websocket打造在線聊天室

瀏覽:12日期:2024-09-06 08:52:03
目錄什么是websocket?第一步 準備工作第二步 編寫聊天室頁面第三步 編寫后臺websocket路由及處理方法第四步 運行看效果小結

Channels是Django團隊研發的一個給Django提供websocket支持的框架,它同時支持http和websocket多種協議。使用channels可以讓你的Django應用擁有實時通訊和給用戶主動推送信息的功能。

演示效果如下所示:

Django使用channels + websocket打造在線聊天室

什么是websocket?

WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進行全雙工通訊的協議。WebSocket 使得客戶端和服務器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在 WebSocket API 中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,并進行雙向數據傳輸。

很多網站為了實現推送技術,所用的技術都是 Ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對服務器發出HTTP請求,然后由服務器返回最新的數據給客戶端的瀏覽器。這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務器發出請求,然而HTTP請求可能包含較長的頭部,其中真正有效的數據可能只是很小的一部分,顯然這樣會浪費很多的帶寬等資源。Websocket能更好的節省服務器資源和帶寬,并且能夠更實時地進行通訊,早已成為一種非常流行必須掌握的技術。

第一步 準備工作

首先在虛擬環境中安裝django和channels(本項目使用了最新版本,均為3.X版本), 新建一個名為myproject的項目,新建一個app名為chat。如果windows下安裝報錯,如何解決自己網上去找吧。

pip install django==3.2.3pip install channels==3.0.3

修改settings.py, 將channels和chat加入到INSTALLED_APPS里,并添加相應配置,如下所示:

INSTALLED_APPS = [ ’django.contrib.admin’, ’django.contrib.auth’, ’django.contrib.contenttypes’, ’django.contrib.sessions’, ’django.contrib.messages’, ’django.contrib.staticfiles’, ’channels’, # channels應用 ’chat’, ] # 設置ASGI應用 ASGI_APPLICATION = ’myproject.asgi.application’ # 設置通道層的通信后臺 - 本地測試用 CHANNEL_LAYERS = { 'default': { 'BACKEND': 'channels.layers.InMemoryChannelLayer' } }

注意 :本例為了簡化代碼,使用了InMemoryChannelLayer做通道層(channel_layer)的通信后臺,實際生產環境中應該需要使用redis作為后臺。這時你還需要安裝redis和channels_redis,然后添加如下配置:

# 生產環境中使用redis做后臺,安裝channels_redis CHANNEL_LAYERS = { 'default': { 'BACKEND': 'channels_redis.core.RedisChannelLayer', 'CONFIG': { 'hosts': [('127.0.0.1', 6379)], #或'hosts': [os.environ.get(’REDIS_URL’, ’redis://127.0.0.1:6379/1’)],}, }, }

最后將chat應用的urls.py加入到項目urls.py中去,這和常規Django項目無異。

# myproject/urls.py from django.conf.urls import include from django.urls import path from django.contrib import admin urlpatterns = [ path(’chat/’, include(’chat.urls’)), path(’admin/’, admin.site.urls), ]第二步 編寫聊天室頁面

我們需要利用django普通視圖函數編寫兩個頁面,一個用于展示首頁(index), 通過表單讓用戶輸入聊天室的名稱(room_name),然后跳轉到相應聊天室頁面;一個頁面用于實時展示聊天信息記錄,并允許用戶發送信息。

這兩個頁面對應的路由及視圖函數如下所示:

# chat/urls.py from django.urls import path from . import views urlpatterns = [ path(’’, views.index, name=’index’), path(’<str:room_name>/’, views.room, name=’room’), ] # chat/views.py from django.shortcuts import render def index(request): return render(request, ’chat/index.html’, {}) def room(request, room_name): return render(request, ’chat/room.html’, { ’room_name’: room_name })

接下來我們編寫兩個模板文件index.html和room.html。它們的路徑位置如下所示:

chat/ __init__.py templates/chat/ index.html room.html urls.py views.py

index.html內容如下所示。它也基本不涉及websocket,就是讓用戶輸入聊天室后進行跳轉。

<!-- chat/templates/chat/index.html --> <!DOCTYPE html> <html> <head> <meta charset='utf-8'/> <title>Chat Rooms</title> </head> <body> 請輸入聊天室名稱: <input type='text' size='100'> <input type='button' value='Enter'> <script> document.querySelector(’#room-name-input’).focus(); document.querySelector(’#room-name-input’).onkeyup = function(e) { if (e.keyCode === 13) { // enter, return document.querySelector(’#room-name-submit’).click(); }}; document.querySelector(’#room-name-submit’).onclick = function(e) { var roomName = document.querySelector(’#room-name-input’).value; window.location.pathname = ’/chat/’ + roomName + ’/’;}; </script> </body> </html>

room.html內容如下所示。為了幫助你理解前后端是怎么實現websocket實時通信的,我給每行js代碼添加了注釋,這對于你理解前端如何發送websocket的請求,如果處理后端發過來的websocket消息至關重要。

<script>// 獲取房間名const roomName = JSON.parse(document.getElementById(’room-name’).textContent); // 根據roomName拼接websocket請求地址,建立長連接// 請求url地址為/ws/chat/<room_name>/const wss_protocol = (window.location.protocol == ’https:’) ? ’wss://’: ’ws://’;const chatSocket = new WebSocket( wss_protocol + window.location.host + ’/ws/chat/’ + roomName + ’/’ ); // 建立websocket連接時觸發此方法,展示歡迎提示chatSocket.onopen = function(e) { document.querySelector(’#chat-log’).value += (’[公告]歡迎來到’ + roomName + ’討論群。請文明發言!n’)} // 從后臺接收到數據時觸發此方法// 接收到后臺數據后對其解析,并加入到聊天記錄chat-log chatSocket.onmessage = function(e) { const data = JSON.parse(e.data); document.querySelector(’#chat-log’).value += (data.message + ’n’);}; // websocket連接斷開時觸發此方法 chatSocket.onclose = function(e) { console.error(’Chat socket closed unexpectedly’);}; document.querySelector(’#chat-message-input’).focus(); document.querySelector(’#chat-message-input’).onkeyup = function(e) { if (e.keyCode === 13) { // enter, return document.querySelector(’#chat-message-submit’).click(); }}; // 每當點擊發送消息按鈕,通過websocket的send方法向后臺發送信息。 document.querySelector(’#chat-message-submit’).onclick = function(e) { const messageInputDom = document.querySelector(’#chat-message-input’); const message = messageInputDom.value; //注意這里:先把文本數據轉成json格式,然后調用send方法發送。 chatSocket.send(JSON.stringify({ ’message’: message })); messageInputDom.value = ’’;}; </script>

此時如果你使用python manage.py runserver命令啟動測試服務器,當你訪問一個名為/hello/的房間時,你將看到如下頁面:

Django使用channels + websocket打造在線聊天室

到這里你看不到任何聊天記錄,也不能發送任何消息,因為我們還沒有在后端編寫任何代碼用于處理前端發來的消息,并返回數據。在終端你還會看到如下報錯, 說Django只能處理http連接,不能處理websocket。

Django使用channels + websocket打造在線聊天室

到目前為止,我們所寫的就是一個普通的django應用,還沒有用到channels庫處理websocket請求。接下來我們就要正式開始使用channels了。

第三步 編寫后臺websocket路由及處理方法

當 Django 接受 HTTP 請求時, 它會根據根 URLconf 以查找視圖函數, 然后調用視圖函數來處理請求。同樣, 當 channels 接受 WebSocket 連接時, 它也會根據根路由配置去查找相應的處理方法。只不過channels的路由不在urls.py中配置,處理方法也不寫在views.py。在channels中,這兩個文件分別變成了routing.py和consumers.py。這樣的好處是不用和django的常規應用混在一起。

routing.py:websocket路由文件,相當于django的urls.py。它根據websocket請求的url地址觸發consumers.py里定義的方法。 consumers.py:相當于django的視圖views.py,負責處理通過websocket路由轉發過來的請求和數據。

在chat應用下新建routing.py, 添加如下代碼。它的作用是將發送至ws/chat/<room_name>/的websocket請求轉由ChatConsumer處理。

# chat/routing.py from django.urls import re_path from . import consumers websocket_urlpatterns = [ re_path(r’ws/chat/(?P<room_name>w+)/$’, consumers.ChatConsumer.as_asgi()), ]

注意:定義websocket路由時,推薦使用常見的路徑前綴 (如/ws) 來區分 WebSocket 連接與普通 HTTP 連接, 因為它將使生產環境中部署 Channels 更容易,比如nginx把所有/ws的請求轉給channels處理。

與Django類似,我們還需要把這個app的websocket路由加入到項目的根路由中去。編輯myproject/asgi.py, 添加如下代碼:

# myproject/asgi.py import os from channels.auth import AuthMiddlewareStack from channels.routing import ProtocolTypeRouter, URLRouter from django.core.asgi import get_asgi_application import chat.routing os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') application = ProtocolTypeRouter({ # http請求使用這個 'http': get_asgi_application(), # websocket請求使用這個 'websocket': AuthMiddlewareStack( URLRouter( chat.routing.websocket_urlpatterns) ), })

在這里,channels的ProtocolTypeRouter會根據請求協議的類型來轉發請求。AuthMiddlewareStack將使用對當前經過身份驗證的用戶的引用來填充連接的scope, 類似于 Django 的request對象,我們后面還會講到。

接下來在chat應用下新建consumers.py, 添加如下代碼:

import json from asgiref.sync import async_to_sync from channels.generic.websocket import WebsocketConsumer import datetime class ChatConsumer(WebsocketConsumer): # websocket建立連接時執行方法 def connect(self): # 從url里獲取聊天室名字,為每個房間建立一個頻道組 self.room_name = self.scope[’url_route’][’kwargs’][’room_name’] self.room_group_name = ’chat_%s’ % self.room_name # 將當前頻道加入頻道組 async_to_sync(self.channel_layer.group_add)( self.room_group_name, self.channel_name) # 接受所有websocket請求 self.accept() # websocket斷開時執行方法 def disconnect(self, close_code): async_to_sync(self.channel_layer.group_discard)( self.room_group_name, self.channel_name) # 從websocket接收到消息時執行函數 def receive(self, text_data): text_data_json = json.loads(text_data) message = text_data_json[’message’] # 發送消息到頻道組,頻道組調用chat_message方法 async_to_sync(self.channel_layer.group_send)( self.room_group_name, { ’type’: ’chat_message’, ’message’: message }) # 從頻道組接收到消息后執行方法 def chat_message(self, event): message = event[’message’] datetime_str = datetime.datetime.now().strftime(’%Y-%m-%d %H:%M:%S’) # 通過websocket發送消息到客戶端 self.send(text_data=json.dumps({ ’message’: f’{datetime_str}:{message}’}))

每個自定義的Consumer類一般繼承同步的WebsocketConsumer類或異步的AysncWebSocketConsumer類,它自帶 self.channel_name 和self.channel_layer 屬性。前者是獨一無二的長連接頻道名,后者提供了 send(), group_send()和group_add() 3種方法, 可以給單個頻道或一個頻道組發信息,還可以將一個頻道加入到組。

每個頻道(channel)都有一個名字。擁有頻道名稱的任何人都可以向頻道發送消息。

一個組(group)有一個名字。具有組名稱的任何人都可以按名稱向組添加/刪除頻道,并向組中的所有頻道發送消息。

注意:雖然異步Consumer類性能更優,channels推薦使用同步consumer類 , 尤其是調用Django ORM或其他同步程序時,以保持整個consumer在單個線程中并避免ORM查詢阻塞整個event。調用channel_layer提供的方法時需要用async_to_sync轉換一下。

除此以外,我們還使用了self.scope[’url_route’][’kwargs’][’room_name’]從路由中獲取了聊天室的房間名,在channels程序中,scope是個很重要的對象,類似于django的request對象,它代表了當前websocket連接的所有信息。你可以通過scope[’user’]獲取當前用戶對象,還可以通過scope[’path’]獲取當前當前請求路徑。

第四步 運行看效果

如果不出意外,你現在的項目布局應該如下所示:

Django使用channels + websocket打造在線聊天室

連續運行如下命令,就可以看到我們文初的效果啦。

python manage.py makemigrations

python manage.py migrate

python manage.py runserver

小結

我們已經使用django + channels 寫了個在線聊天小應用了,現在來總結下我們所學的知識吧。

websocket屬于全雙工通訊的協議,可以在服務器和客戶端之間保持長連接,實現雙向數據傳輸。 前端創建websocket對象后可以通過onmessage監聽并處理后端返回的數據,可以通過send方法向后端發送數據。 channels對應websocket的路由和處理方法分別寫在routing.py和consumers.py文件里,相當于django的urls.py和views.py。 每個頻道(channel)都有一個名字,擁有頻道名稱的任何人都可以向頻道發送消息。一個組(group)有一個名字,可以包含多個頻道。 每個自定義的Consumer類自帶 self.channel_name 和self.channel_layer 屬性。前者是獨一無二的頻道名,后者提供了 send(), group_send()和group_add() 3種方法。 在channels程序中,scope是個很重要的對象,類似于django的request對象,它代表了當前websocket連接的所有信息,比如scope[’user’], scope[’path’]。

本文的知識你學會了嗎? 學到了就點個贊吧!下期我們將利用channels + celery + redis打造個聊天機器人,歡迎關注!

以上就是Django使用channels + websocket打造在線聊天室的詳細內容,更多關于Django 在線聊天室的資料請關注好吧啦網其它相關文章!

標簽: Django
相關文章:
主站蜘蛛池模板: 人妻一本久道久久综合久久鬼色 | 97久人人做人人妻人人玩精品 | 日日干影院 | 美女福利影院 | 美腿丝袜亚洲综合 | 天天综合天天做 | 日本xxxxwww | 国产精品久久久久久精 | 青青草国产精品 | 国内成人自拍 | 久久 国产 尿 小便 嘘嘘 | 亚洲日本韩国 | 好av在线 | 狠狠干一区| 欧美成人免费在线 | 日本一级理论片在线大全 | 久久久精品在线 | 国产aaa级片 | 欧美性猛交xxxx乱大交丰满 | 噜噜噜久久亚洲精品国产品91 | 日韩精品一区二区三区中文字幕 | 国产欧美一区二区精品久导航 | 国产精品久久久久久久久久98 | 国内成人综合 | 又黄又爽又色成人免费体验 | 美女视频久久 | 香港三日本三级少妇三99 | 精品少妇爆乳无码av无码专区 | 久久99精品国产麻豆婷婷洗澡 | 在线成人www免费观看视频 | 久久精精品久久久久噜噜 | 久草不卡 | 中文字幕成熟丰满人妻 | 黄色av影视| 日本免费一区二区三区最新vr | 国产91在线播放精品91 | 国产黄在线观看 | 国产精品香蕉 | 久久久久久久久久久丰满 | 日韩一级片中文字幕 | 日本一码二码三码在线 | 东北话对白xxxx | 国产精品丝袜美腿一区二区三区 | 久久99国产精品久久99果冻传媒新版本 | 日韩最新 | 欧美亚洲视频 | 亚洲三级一区 | 欧美jizzhd精品欧美丰满 | 日韩欧美在线看 | 啪啪的网站 | 国产青青 | 欧美成人精品一区二区三区在线看 | 一本大道在线一本久道视频 | 国产精品一区二区免费看 | 五月天av影院 | 久久久性色精品国产免费观看 | 国产精品一 | 欧美透逼视频 | 少妇的丰满3中文字幕 | 精品一区二区三区免费毛片爱 | 欧美精品乱码99久久影院 | 久久久中文字幕日本无吗 | 国产精品爽爽久久 | 欧美成人动态图 | 日本高清有码视频 | 国产a视频 | 亚洲v日韩v综合v精品v | 极品美女一线天粉嫩 | 欧美色欧美亚洲另类二区 | 最新天堂av | 国产精品无码久久综合 | 91精品国产91久久久久久久久 | 2024av视频| 在线中文视频 | 一区二区三区国产 | 蜜臀av免费一区二区三区久久乐 | 国产精品久久久久久麻豆一区 | 自拍偷拍视频网站 | 中文字幕无码免费久久 | 国产日韩视频在线 | 精品av综合导航 | 怡红院免费的全部视频 | 自拍偷自拍亚洲精品偷一 | 91久久精品一区二区三区 | 80日本xxxxxxxxx96 81国产精品久久久久久久久久 | 久久久高清视频 | 无码aⅴ在线观看 | 国产黄色精品网站 | av一二三| 成人麻豆日韩在无码视频 | av五月天在线 | 性欧美老人牲交xxxxx视频 | 99精品久久99久久久久 | 天天射一射 | 超碰按摩 | 久久久久久久久影院 | 亚洲欧美精品无码一区二区三区 | 91视频综合网 | 国产欧美一区二区三区沐欲 | 男女羞羞羞视频午夜视频 | 狠狠色噜噜 | 爱吃波客今天最新视频 | 久久婷婷丁香五月综合五 | 十八禁真人啪啪免费网站 | 欧美精品在线一区二区 | 天堂av手机版 | 成人av动漫在线观看 | 少妇无码av无码专区线 | 亚洲欧美韩日 | 国产乱码精品一区二区三区不卡 | 巨肉超污巨黄h文小短文 | 日韩精品一卡2卡3卡4卡分类 | 91瑟瑟 | 又湿又紧又大又爽a视频国产 | 亚洲精品午夜无码专区 | 色综合久久久久综合体桃花网 | 国产精品丝袜久久久久久不卡 | 国产东北农村女人av | 波多野结衣 黑人 | 91插插插插| 久久国产精品偷任你爽任你 | 91麻豆精品91久久久久同性 | 黄色网在线免费观看 | 污污在线免费观看 | 亚洲国产精品久久久久秋霞不卡 | 中文字幕一区二区三区乱码在线 | 一区二区三国产 | 国产又粗又大又长 | 99av精品孕妇在线 | 人人看人人艹 | 在线人成免费视频69国产 | 狠狠干一区 | 国产中文区4幕区2022 | 成人深夜福利视频 | 一本色道久久88加勒比—综合 | 偷拍一女多男做爰免费视频 | bbbbbbbbb毛片大片按摩 | 国产二区三区在线 | 亚洲一区日韩在线 | 日韩视频欧美视频 | 天堂中文官网在线 | 色吊丝av中文字幕 | 日韩第一页在线 | 久久免费黄色网址 | 欧美久久久久久久高潮 | 精品国产乱码久久久久久精东 | 春色伊人| 日本边添边摸边做边爱 | 亚州性无码不卡免费视频 | 国产精品女上位好爽在线观看 | yy8090理论片在线大全中文 | 成人免费区一区二区三区 | 色偷偷91| a猛片免费播放 | 真人作爱免费视频 | 久久泄欲网 | 偷拍中国夫妇高潮视频 | 99久久国产综合精品1 | 天天躁日日躁狠狠躁av麻豆男男 | 99久久免费国产精精品 | 黄色av网站在线播放 | 亚洲高清毛片一区二区 | 正在播放欧美 | 久久人人爽人人人人爽av | 亚洲国产精品免费 | 韩国精品视频在线观看 | 中文字幕日韩一区 | 野外做受又硬又粗又大视幕 | 成人欧美一区二区三区小说 | play在线海量a v视频播放 | 中文国产 | 91九色国产ts另类人妖 | v一区无码内射国产 | 精品亚洲麻豆1区2区3区 | 欧洲精品在线播放 | 成年18网站免费进入夜色 | 亚洲精品无码永久中文字幕 | 456亚洲视频 | 中韩日产字幕2021 | 欧美巨大双龙性猛交乱大 | 国产看黄网站又黄又爽又色 | 伊人久久五月天 | 高清日韩av | 四虎影视永久免费 | 国产精品网页 | 又粗又黄又硬又爽的免费视频 | 久久av无码精品人妻糸列 | 国产黄色av片 | 黄色三及| 翔田千里高潮在线播放 | 丁香色婷婷国产精品视频 | 成年免费视频黄网站在线观看 | 亚洲男人第一av网站 | 精品女同一区二区三区在线观看 | 国产又黄又爽又猛免费视频网站 | 尤物网站在线 | 精品国产一区二区三区色欲 | 麻豆成人久久精品二区三区免费 | 午夜激情影院在线观看 | 极品嫩模高潮叫床 | 成人精品视频一区二区三区 | 欧美人妖xxxx | 日韩在线观看视频一区二区 | 国产地址一 | 国产成人亚洲在线观看 | 亚洲一区二区三区麻豆 | 欧美与动人物性生交 | 国产综合久久久久 | 强行交换配乱婬bd | 91精品国产自产91精品 | 一区二区三区av夏目彩春 | 一级草逼片 | 美女看片 | 国产美女激情视频 | 亚洲熟妇无码久久精品 | 久久视频这里只精品 | 国产成人精品午夜视频免费 | 国产精品无码无在线观看 | 国产精品亚洲专区无码不卡 | 久久99热人妻偷产国产 | 欧美一级成人 | 人妻少妇乱子伦精品无码专区电影 | 久久综合九色综合久99 | 亚洲天堂免费观看 | 18禁黄网站免费 | 东方欧美色图 | 欧美福利影院 | 欧美xxxxx精品 | 伊人久久久 | 日批视频免费播放 | 天天弄天天操 | a级毛片黄免费观看 m | 日本丰满熟妇videossex一 | 国产乱子经典视频在线观看 | 国产精品538一区二区在线 | www.17c亚洲蜜桃 | 国产婷婷一区二区三区 | 成人性色生活片免费看l | 欧美成人精品激情在线观看 | 国产日韩精品中文字无码 | 99久热在线精品视频观看 | 无码天堂va亚洲va在线va | 国产免费啪啪 | 一级特黄毛片 | 午夜爱 | 久久97精品国产96久久小草 | 四色网址 | 一级大片网站 | 日本熟妇色xxxxx欧美老妇 | 日韩免费视频一区 | 国产一区欧美 | 黄网址在线免费观看 | 国产福利萌白酱在线观看视频 | 久久精品国产sm调教网站演员 | 中文字幕日韩国产 | 成人精品久久日伦片大全免费 | 污污视频免费网站 | 操一线天逼 | 老湿机69福利 | 乱淫a欧美裸体超级xxxⅹ | 巨大巨粗巨长 黑人长吊 | 亚洲精品久久久久久久不卡四虎 | 激情综合色五月丁香六月欧美 | 亚洲经典三级 | 久久久国产亚洲精品 | 在线视频麻豆 | 少妇口述疯狂刺激的交换经历 | 精品久久久久久综合日本 | 娇小性xxxx性xxx开放69 | 99久久国产综合精品麻豆 | 亚洲熟妇无码av另类vr影视 | 凹凸国产熟女精品视频 | 强行无套内谢大学生初次 | 欧美激情在线一区二区 | 青青草精品在线 | 国产a∨精品一区二区三区不卡 | 国产精品9999久久久久仙踪林 | 草啪啪 | 国产破处av | 117美女写真午夜一级 | 国产精品岛国久久久久 | 色综合a怡红院怡红院 | 伊人av超碰久久久麻豆 | 国产欧美黑寡妇久久久 | 超薄肉色丝袜一二三四 | 在线观看所有av | 日本中文字幕在线观看视频 | 久久久久xxxx| 国产精品久久视频 | 一线天 粉嫩 在线播放 | 冲田杏梨av一区二区三区 | 午夜精品一区二区三区在线 | 亚洲精品国产精品乱码不卡 | 精品国产一区二区三区久久久蜜月 | 中文字幕综合在线 | 97激情| 黄网在线免费观看 | 成人一级视频 | 性视频黄色 | 国产成人愉拍精品久久 | 69成人网| 国产成人欧美一区二区三区的 | 亚洲熟妇无码一区二区三区导航 | 丝袜老师办公室里做好紧好爽 | 亚洲黄网av | 337p日本欧洲亚洲大胆色噜噜 | 少妇又色又紧又爽又刺激视频 | 国产综合精品一区二区三区 | 欧美精品与黑人又粗又长 | 国产日韩网站 | 欧美一本乱大交性xxxⅹ | xxxxwww一片 | 山村大伦淫第1部分阅读小说 | 日韩在线 | 中文 | 97人妻熟女成人免费视频色戒 | 卧室激情呻吟黄暴h文 | aaa黄色| 欧美乱论 | 丰满大肥婆肥奶大屁股 | 日本妞vs黑人巨大xxxxx | 女人浣肠av大片 | 欧美性群另类交 | 欧美福利网 | 99国产精品 | 羞羞视频网站在线观看 | 国产乱人乱精一区二视频 | 国产精品午夜一区二区三区视频 | 特级a做爰全过程片 | 精品国产系列 | 可以直接免费观看的av网站 | 久久国产乱子伦精品免费午夜,浪货好紧 | 东京热加勒比无码少妇 | 荒岛淫众女h文小说 | 日日噜噜噜夜夜爽爽狠狠视频97 | 人妻精品久久无码专区精东影业 | 男女无套免费视频网站 | 伊人久久大香线蕉成人综合网 | 欧美最黄视频 | 超碰天天干 | 色播一区二区 | 国产偷伦在线 | 欧美丝袜一区二区三区 | 亚洲做受高潮欧美裸体 | av区无码字幕中文色 | 少妇又色又爽又刺激视频 | 波多野结衣久久久久 | а√新版天堂资源中文8 | 国产精品一区二区在线观看 | 国产精品国产三级国产aⅴ9色 | 久久综合热 | 又粗又猛又爽又黄少妇视频网站 | 好爽…又高潮了免费毛片 | 国产精品入口久久 | 亚洲成人精品在线 | 九九色播| 嫩b人妻精品一区二区三区 色噜噜亚洲男人的天堂 | av资源网在线观看 | 91大神久久 | 亚洲一区二区三区四区五区乱码 | 久久久久久曰本av免费免费 | 色一五月 | 一级片的网站 | 免费视频国产在线观看 | 丰满人妻一区二区三区无码av | lutube成人福利在线观看污 | 久久人人爽人人爽人人片 | 欧美激情在线狂野欧美精品 | 91插插插插 | 国产视频三级 | 18禁无遮挡羞羞污污污污网站 | 91在线资源 | 中文字幕日韩在线视频 | 日本丰满熟妇bbxbbxhd | 91精品国产色综合久久不8 | 国产精品国产自产拍高清av | 四虎4hu| 日韩一区二区免费视频 | 老人与老人免费a级毛片 | 台湾三级毛片 | 日本高清www免费视频大豆 | 午夜视频福利在线 | 亚洲精品国产一区二区 | 少妇的性生话免费视频 | 一本—道久久a久久精品蜜桃 | 国产在线精品一区二区三区 | 免费看国产黄色 | 午夜裸体性播放 | 久久精品8| 18禁黄久久久aaa片 | 天天爽天天爽夜夜爽毛片 | 亚洲人成人毛片无遮挡 | 催眠肉高h喷汁呻吟np | 日韩成人综合 | 日本三级吃奶头添泬 | 亚洲蜜桃精久天干天干天啪啪夜l | 国产88久久久国产精品免费二区 | 午夜夜伦鲁鲁片六度影院 | 中国一级特黄毛片大片 | 免费成人深夜夜行网站视频 | 日韩精品一区二区在线观看 | 天堂国产一区二区三区 | 国产精品久久久久久久久动漫 | 麻花传媒在线观看免费 | 成 人 黄 色视频免费播放 | 亚洲精品中文字幕在线 | 国产精品vⅰdeoxxxx国产 | 自拍偷自拍亚洲精品情侣 | 777色淫网站女女免费 | 亚洲一区二区三区av在线观看 | 日本大尺度吃奶做爰久久久绯色 | 日本黄色录相 | 少妇饥渴偷公乱51 | 女人裸体性做爰23 | 欧美中文字幕在线播放 | 欧美 日韩 国产 亚洲 色 | 欧美乱大交xxxxx春色视频 | 欧美国产日韩在线观看成人 | 欧美一级免费黄色片 | 午夜精品国产精品大乳美女 | 对白超刺激精彩粗话av | 中文字幕爱爱 | 午夜精品久久久久久久99樱花 | 99精品免费久久久久久久久日本 | 狠狠色综合久久婷婷色天使 | 日韩特黄色片子看看 | 依人综合网| 国产精品成人久久 | 亚洲免费成人在线 | 国产乱人伦偷精品视频 | 国产极品美女做性视频 | 免费一级男女裸片 | 国产乱人内谢69xxxx亚洲 | 国产精品13p | 影音先锋男人av橹橹色 | 自拍偷拍免费 | 久久精品蜜桃 | 欧美黄色高清视频 | 好爽好黄的视频 | 国产女主播高潮在线播放 | 夜夜嗨av一区二区三区 | 新国产三级在线观看播放 | 福利一区二区三区视频在线观看 | 调教重口xx区一精品网站 | 久久久久亚洲精品 | 在线观看深夜视频 | 日噜噜夜噜噜 | 黄色av免费在线观看 | 国产热a欧美热a在线视频 | 久久精品无码一区二区日韩av | 激情麻豆 | 亚洲区免费中文字幕影片|高清在线观看 | 国产乱妇乱子视频在播放 | 推油少妇久久99久久99久久 | 天天av天天操 | 久久久久久影院 | 女人高潮内射99精品 | 日日噜噜噜夜夜爽爽狠狠小说 | 护士的小嫩嫩好紧好爽 | 欧美xxxx18国产| 亚洲а∨天堂久久精品9966 | 男人的天堂视频 | 高清毛片aaaaaaaaa郊外 | 四虎成人精品永久免费av | 99在线精品免费视频九九视 | 波多一区 | 蜜臀av免费一区二区三区 | 国产自在自拍 | 国产日产欧产精品精品首页 | 国产精品交换 | 国产成人a人亚洲精v品无码 | 国产精品 欧美精品 | 少妇搡bbbb爽毛片无 | 免费av免费看 | 少妇沉沦哀羞迎合呻吟视频 | 国产娇喘精品一区二区三区图片 | 欧美综合天天夜夜久久 | 一本大道东京热无码 | 蜜桃av免费在线观看 | 国产精品久久久久久久久久辛辛 | 国产亚洲精品女人久久久久久 | 风间由美av| 伊人精品在线观看 | 一区二区三区精彩视频 | 亚洲欧美在线另类 | 日韩成人在线观看 | 青青草大香焦在线综合视频 | 欧美精品乱码99久久影院 | 夫の友人 风间ゆみ 在线 | 亚洲国产精品久久人人爱潘金莲 | 国产在线极品 | 操人在线观看 | 久久久国产亚洲精品 | 国产精品人人 | 天天躁夜夜躁狠狠躁2021牛牛 | 国产无遮挡又黄又爽对白视频 | 欧美日a| 国产农村妇女毛片精品久久 | 一本加勒比hezyo综合 | 久久窝窝 | 午夜剧场大片亚洲欧洲一区 | 人人摸人人搞人人透 | 黄色成人小视频 | 色av色| 色欧美片视频在线观看 | 久久久精品中文字幕麻豆发布 | 精人妻无码一区二区三区 | 中文字幕无码精品亚洲35 | 国产女人呻吟高潮抽搐声 | 91免费网站视频 | 丰满蕾丝乳罩少妇呻吟91 | 天堂最新资源在线 | 国产一区欧美 | 国产精品一区二区久久 | 欧美亚洲国产成人 | 精品午夜一区二区 | 森泽佳奈作品在线观看 | 内射中出日韩无国产剧情 | 欧美视频一级 | 中文字幕系列 | 精品国产成人一区二区 | 黄色资源在线 | 欧美黑人xxxx高潮猛交 | 欧美日p视频 | 正在播放精彩绝伦对白 | 天天噜噜噜噜噜噜 | 在线免费观看视频你懂的 | 亚洲精品国产crm | 中文字幕无产乱码 | 欧美一级淫片免费 | 成人免费xyz网站 | www夜片内射视频在观看视频 | 韩日精品视频 | 国产一区二区精品在线观看 | 日韩精品在线观看视频 | 欧美日韩不卡合集视频 | www色播com| 久久久久久九九九 | 久久国产成人精品国产成人亚洲 | 精品国产综合 | 人妻中出受孕 中文字幕在线 | 玖玖视频在线 | 一级黄色片视频 | 国产黄色免费视频 | 在线免费观看污网站 | 天天狠天天插天天透 | 免费看国产曰批40分钟 | 亚洲中文字幕久久精品蜜桃 | 欧美精品与人动性物交免费看 | 欧美高清hd | 人妻激情偷乱视频一区二区三区 | 国产一区二区成人 | 国产a∨精品一区二区三区不卡 | 午夜视频a | 精品三级在线 | 在线精品福利 | 狠狠色噜噜狠狠狠狠777米奇 | 91精品视频一区二区三区 | 精品国产乱码久久久久久芒果 | 区一区二区三区中文字幕 | 中文天堂在线观看 | 色就是欧美 | 国产a精品 | 国产成人久久av免费看 | 这里只有精品视频 | 午夜激情毛片 | 色妞色视频一区二区三区四区 | 日韩视频三区 | 国产麻豆剧果冻传媒白晶晶 | 一级空姐毛片 | 偷窥少妇高潮呻吟av久久免费 | 成人免费精品网站 | 久久精品中文字幕一区二区三区 | 蜜臀av国产精品久久久久 | 免费黄色成人 | 国产探花一区二区 | 国产精品视频在线观看 | 777奇米888色狠狠俺也去 | 中文字幕第31页 | 天天射射综合 | 好大好湿好硬顶到了好爽视频 | 亚洲国产一区二区天堂 | 日日碰狠狠躁久久躁综合网 | 成人免费无遮挡无码黄漫视频 | 欧美视频在线观看视频 | 免费看国产一级片 | h视频网站在线观看 | 日本毛片高清免费视频 | babes性欧美69 | 亚洲欧美日韩在线看 | 狠狠色丁香婷婷久久综合五月 | 香港三日三级少妇三级99 | 亚洲成人免费观看 | 麻豆久久久9性大片 | 1024精品一区二区三区日韩 | 国产成人啪精品视频免费软件 | 黄色三级视频 | 免费专区丝袜调教视频 | 精品人妻久久久久久888 | 日韩欧美亚洲天堂 | av黄色片| 午夜三级在线观看 | 1515hh成人免费看 | 国产丰满果冻videossex | 五月伊人网 | 久久精品中文无码资源站 | 亚洲成人免费在线 | 精品久久久久久久久久国产潘金莲 | 毛片视频播放 | 欧美亚洲精品一区二区三区 | 亚洲综合伊人久久大杳蕉 | 久久久精品免费 | 丰满女邻居的色诱4hd | 国产伦精品一区二区三区视频我 | 国产欧美日韩综合精品二区 | www日韩在线|