日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django-web聊天

發(fā)布時間:2024/4/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django-web聊天 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

h2{ background-color: #00ccff; }

WEBQQ的實現(xiàn)的幾種方式

1、HTTP協(xié)議特點

首先這里要知道HTTP協(xié)議的特點:短鏈接、無狀態(tài)!

在不考慮本地緩存的情況舉例來說:咱們在連接博客園的時候,當tcp連接后,我會把我自己的http頭發(fā)給博客園服務器,服務器端就會看到我請求的URL,server端就會根據(jù)URL分發(fā)到相應的視圖處理(Django的views里)。最后給我返回這個頁面,當返回之后連接就斷開了。

短連接:

服務器為什么要斷開?很多情況下我還會打開頁面,我請求一次連接斷開了為什么會這樣?為什么不建立長期的連接?這個是HTTP設計的考慮,在大并發(fā)的情況下,如果連接不斷開,我不知道你什么時候點,你可能立刻就點有可能10分鐘1個小時或者其他時間點,那么你就會占著這個連接(是很浪費的,并且連接是有限的),所以當返回后server端就會斷開這個連接。

無狀態(tài):

服務器不保存客戶端的任何狀態(tài),每一次客戶端連接服務器的時候都要把相關的信息發(fā)給客戶端告訴客戶端你是誰,服務端不會保存你是誰?

那么問題來了,為什么我們在登錄京東之后登錄一次之后,服務器就不會讓咱們在登錄了,根據(jù)咱們之前的博客的Session和Cookie。服務器端會在用戶登錄的時候,在服務器端生成一個sessionID(有有效期)并且返回給客戶。客戶端會把這個seesionID存到Cookie里。這樣登錄之后就不需要再輸入密碼!

2、WEBqq通信實現(xiàn)

首先看下面的圖

根據(jù)WEBQQ的工作來看下,首先C1要發(fā)送一條數(shù)據(jù)給C2首先得通過WEB Server進行中轉,首先咱們這知道了,正常情況下當C1發(fā)送給WEB Server之后,WEB Server就直接返回了,WEB Server就斷開了C1的連接了,那么WEB Server會主動給C2發(fā)送信息嗎?

WEB 服務器默認是被動接收請求的,如果你沒打開瀏覽器,博客園可以給你發(fā)信息嗎?即便你打開了瀏覽器,你獲取到數(shù)據(jù)之后就斷開了,你看到的是本地緩存的數(shù)據(jù)。 你和服務器之間就沒有聯(lián)系了。如果服務器想把數(shù)據(jù)發(fā)送給C2那的等C2連接過來,服務器一看有一條C2的數(shù)據(jù)然后發(fā)給C2.那么問題又來了?他知道C2什么時候連接過來嗎?服務端不知道C2什么時候連接過來服務端又想能時時把數(shù)據(jù)發(fā)送給C2怎么做呢?《輪詢》

輪詢方式:

短輪詢:

C2客戶端有個循環(huán),去Server端取數(shù)據(jù)。不斷的循環(huán)去取(會對Server端造成壓力)

C2客戶端有個時間段的循環(huán),每隔1分鐘去取一次,但是不是時時的,這樣也不好。

長輪詢:

上面的方式也是不可取的那怎么做呢:有沒有這么一種方法:當C2請求過來接收的時候,Server端沒有C2的數(shù)據(jù),Server端沒有辦法主動讓C2等著那怎么辦呢?把C2的請求掛起,當有數(shù)據(jù)的時候在把數(shù)據(jù)立刻返回,并且多久還是沒有數(shù)據(jù)就把這個鏈接返回!

這樣所有的鏈接就變成有意義的請求。我不給他斷開他就不會發(fā)新的請求!

本質上還是輪詢,但是他發(fā)請求的頻率就非常低了!

但是有個問題:他本質上還是一個短鏈接(這里慢慢想下其實不難理解),如果消息頻繁的話,他還是不斷的重新建立鏈接。這樣也會對服務器造成影響!每收一條消息都得往返兩次。他其實也是不夠高效的。

真正的WEBQQ就是用的這個原理來實現(xiàn)的!(因為WEB Socket只有部分瀏覽器支持(H5標準)IE不支持,在中國的這個環(huán)境下IE使用率還是較高的所以不能普及,所以這個方法還是OK得)

?

還有一個方法就是,真正的長連接,在瀏覽器上起一個Socket客戶端然后連接到服務端,他倆建立一個Socket通道,這樣就和Socket Server和Socket Client一樣這樣他們之間的數(shù)據(jù)傳輸就是,時時的了!這個就叫做WEB Socket ?!!!!!

Socket Server和Socket Client和WEB Socket的區(qū)別就是WEB Socket啟動在瀏覽器上! 0 0 !

比如我們在支持H5的瀏覽器上比如Google的瀏覽器輕松起一個WEB Socket,但是這個不僅僅要客戶端支持,Server端也得支持才可以!

sock = new WebSocket("ws://www.baidu.com")

WEB QQ 表結構

?首先用戶的好友在哪個表里?在用戶表里那么他就的關聯(lián)自己了并且是多對多的關系,你可以有多個朋友,你朋友也可以有多個朋友!

class UserProfile(models.Model):'''用戶表'''#使用Django提供的用戶表,直接繼承就可以了.在原生的User表里擴展!(原生的User表里就有用戶名和密碼)#一定要使用OneToOne,如果是正常的ForeignKey的話就表示User中的記錄可以對應UserProfile中的多條記錄!#并且OneToOne的實現(xiàn)不是在SQL級別實現(xiàn)的而是在代碼基本實現(xiàn)的!user = models.OneToOneField(User)#名字name = models.CharField(max_length=32)#屬組groups = models.ManyToManyField("UserGroup")#朋友friends = models.ManyToManyField('self',related_name='my_friends')

然后在建立一個APP然后APP名稱為:web_chat 他調用WEB里的UserProfile用戶信息,然后在web_chat的models里新創(chuàng)建一個表:QQGroup!(復習不同APP間的Model調用~)

#/usr/bin/env python #-*- coding:utf-8 -*- from __future__ import unicode_literalsfrom django.db import models from web.models import UserProfile# Create your models here.class QQGroup(models.Model):'''QQ組表'''#組名name = models.CharField(max_length=64,unique=True)#注釋description = models.CharField(max_length=255,default="The Admin is so lazy,The Noting to show you ....")'''下面的members和admins在做跨APP關聯(lián)的時候,關聯(lián)的表不能使用雙引號!并且在調用,Django的User表的時候也不能加雙引號。'''#成員members = models.ManyToManyField(UserProfile,blank=True)#管理員admins = models.ManyToManyField(UserProfile,blank=True,related_name='group_admins')'''如果在一張表中,同樣調用了另一張表同樣的加related_name'''#最大成員數(shù)量max_member_nums = models.IntegerField(default=200)def __unicode__(self):return self.name

這里:members和admins在做跨APP關聯(lián)的時候,關聯(lián)的表不能使用雙引號!并且在調用,Django的User表的時候也不能加雙引號。

WEBQQ相關知識點總結

1、URL相關

在之前做不同APP的時候,我們都是輸入完全的URL,我們可以定義一個別名來使用它很方便!

別名的好處:如果說那天想修改url里的這個url名稱了,是不是所有前端都得修改!并且在有好幾層的時候怎么改使用別名就會非常方便了!

projecet下的總URL

?

#!/usr/bin/env python #-*- coding:utf-8 -*- """Creazy_BBS URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/1.9/topics/http/urls/ Examples: Function views1. Add an import: from my_app import views2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views1. Add an import: from other_app.views import Home2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf1. Import the include() function: from django.conf.urls import url, include2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import url from django.conf.urls import include from django.contrib import adminfrom web import views from web import urls as web_urls from web_chat import urls as chat_urlsurlpatterns = [url(r'^admin/', admin.site.urls),#include-app weburl(r'^web/', include(web_urls)),#include-app web_chaturl(r'^chat/', include(chat_urls)),#指定默認的URL,url(r'',views.index,name='index'), ]

web app中的URL指定相應的別名

from django.conf.urls import url import views urlpatterns = [url(r'category/(\d+)/$',views.category,name='category'),url(r'article_detaill/(\d+)/$',views.article_detaill,name='article_detaill'),url(r'article/new/$',views.new_article,name='new_article'),url(r'account/logout$',views.acount_logout,name='logout'),url(r'account/login',views.acount_login,name='login'),]

web_chat app中的別名

from django.conf.urls import url import viewsurlpatterns = [url(r'^dashboard/$', views.dashboard,name='web_chat'),]

在前端引用的時候需要注意:例如下面兩個就需要使用別名來指定,格式也必須正確!

<li><a href="{% url 'new_article' %}">發(fā)帖</a></li> <li><a href="{% url 'logout' %}">用戶注銷</a></li>

2、使用Django自帶的模塊判斷用戶是否登錄

#/usr/bin/env python #-*- coding:utf-8 -*- from django.shortcuts import render#導入Django自帶的判斷用戶是否登錄的模塊 from django.contrib.auth.decorators import login_required # Create your views here.#應用裝飾器 @login_required def dashboard(request):return render(request,'web_chat/dashboard.html')

然后在settings里配置,如果沒有登錄轉向的URL

LOGIN_URL = '/web/account/login/'

3、事件鏈

?

//頁面加載完成后$(document).ready(function () {//delegate 事件鏈,把多個事件進行綁定//給body下的textarea進行綁定,當回車鍵按下后執(zhí)行的函數(shù)$("body").delegate("textarea", "keydown",function(e){if(e.which == 13) {//如果13這個按鍵(回車,可以通過console.log輸出實際按下的那個鍵),執(zhí)行下面的函數(shù)//send msg button clickedvar msg_text = $("textarea").val();if ($.trim(msg_text).length > 0){ //如果去除空格后,大于0//console.log(msg_text);//SendMsg(msg_text); //把數(shù)據(jù)進行發(fā)送 }//把數(shù)據(jù)發(fā)送到聊天框里 AddSentMsgIntoBox(msg_text);$("textarea").val('');}});//end body});//頁面也在完成,結束

這里需要注意,在$(document).ready中調用的函數(shù)不能寫在$(document).ready中,$(document).ready你已加載就執(zhí)行了,$(document).ready自己也是一個函數(shù),你$(document).ready執(zhí)行完之后就不存在了,就釋放了,你在$(document).ready中定義的函數(shù),外面就無法調用了。

4、聊天內容自動擴展并且可以感覺內容進行自動滑動

?首先配置聊天的窗口樣式:

.chat_contener {width: 100%;height: 490px;background-color: black;opacity: 0.6;overflow: auto; }

然后配置,當我們發(fā)送數(shù)據(jù)的時候自動的滾動

//定義發(fā)送到聊天框函數(shù)function AddSentMsgIntoBox(msg_text){//拼接聊天內容/*氣泡實現(xiàn)<div class="clearfix"><div class="arrow"></div><div class="content_send"><div style="margin-top: 10px;margin-left: 5px;">Hello Shuaige</div></div></div>*/var msg_ele = "<div class='clearfix' style='padding-top:10px'>" + "<div class='arrow'>" + "</div>" +"<div class='content_send'>" + "<div style='margin-top: 10px;margin-left: 5px;'>" +msg_text + "</div>" + "</div>";$(".chat_contener").append(msg_ele);//animate 動畫效果$('.chat_contener').animate({scrollTop: $('.chat_contener')[0].scrollHeight}, 500);//動畫效果結束}//發(fā)送到聊天框函數(shù)結束

Ajax發(fā)送方式

正常情況下來說咱們在寫一個Ajax請求的時候都是這么寫的:

$.ajax({url:'/save_hostinfo/',type:'POST',tradition: true,data:{data:JSON.stringify(change_info)},success:function(arg){//成功接收的返回值(返回條目)var callback_dict = $.parseJSON(arg);//這里把字符串轉換為對象//然后咱們就可以判斷if(callback_dict){//執(zhí)行成功了//設置5秒鐘后隱藏setTimeout("hide()",5000);var change_infos = '修改了'+callback_dict['change_count']+'條數(shù)據(jù)';$('#handle_status').text(change_infos).removeClass('hide')}else{//如果為False執(zhí)行失敗了 alert(callback_dict.error)}}})

還有另一種方式(簡約版):

//向后端發(fā)送數(shù)據(jù)$.post("{% url 'send_msg' %}" ,{'data':JSON.stringify(msg_dic)},function(callback){console.log(callback);});//向發(fā)送數(shù)據(jù)結束//解釋:// $.post 或者 $.get 是調用ajax方法//("URL路徑" ,{'data':JSON.stringify(msg_dic)},function(callback){})// // 這個第一個參數(shù)為指定的ULR 第二個參數(shù)為發(fā)送的內容 第3個參數(shù)為回調函數(shù)和返回的值!!

AjaxPOST數(shù)據(jù)CSRF問題?

在做Django的Form表單的時候學了,直接在提交表單哪里加上csrftoken就可以了,那Ajax怎么進行認證呢?可以使用下面的方法進行認證

//獲取CSRF參數(shù)function GetCsrfToken(){return $("input[name='csrfmiddlewaretoken']").val()}//發(fā)送消息function SendMsg(msg_text){var contact_id = $('#chat_hander h2').attr("contact_id"); //獲取發(fā)送給誰消息var contact_type = $('#chat_hander h2').attr("contact_type");//獲取聊天類型var msg_dic = {'contact_type':contact_type,'to':contact_id,'from':"{{ request.user.userprofile.id }}",'from_name':"{{ request.user.userprofile.name }}",'msg':msg_text};//向后端發(fā)送數(shù)據(jù)$.post("{% url 'send_msg' %}" ,{'data':JSON.stringify(msg_dic),'csrfmiddlewaretoken':GetCsrfToken()},function(callback){console.log(callback);});//向發(fā)送數(shù)據(jù)結束//解釋:// $.post 或者 $.get 是調用ajax方法//("URL路徑" ,{'data':JSON.stringify(msg_dic)},function(callback){})// // 這個第一個參數(shù)為指定的ULR 第二個參數(shù)為發(fā)送的內容 第3個參數(shù)為回調函數(shù)和返回的值!! }//發(fā)送消息結束

那有沒有一勞永逸的方式呢:

function getCookie(name) {var cookieValue = null;if (document.cookie && document.cookie != '') {var cookies = document.cookie.split(';');for (var i = 0; i < cookies.length; i++) {var cookie = jQuery.trim(cookies[i]);// Does this cookie string begin with the name we want?if (cookie.substring(0, name.length + 1) == (name + '=')) {cookieValue = decodeURIComponent(cookie.substring(name.length + 1));break;}}}return cookieValue; } var csrftoken = getCookie('csrftoken'); function csrfSafeMethod(method) {// these HTTP methods do not require CSRF protectionreturn (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({beforeSend: function(xhr, settings) {if (!csrfSafeMethod(settings.type) && !this.crossDomain) {xhr.setRequestHeader("X-CSRFToken", csrftoken);}} });

還有一個插件,他實現(xiàn)了“一勞永逸的上半部分,下半部分還是得需要寫:JavaScript Cookie library?” ,其實也不是很多自己寫的就可以了。

WEBQQ消息存儲方式?

首先要知道如下幾點:C1發(fā)給C2消息,消息被發(fā)送到服務端之后,當服務端請求過來之后C2接收到消息之后消息就服務端的數(shù)據(jù)就沒有意義了。所以不能使用Mysql、這樣的數(shù)據(jù)置于Redis和Memcache也是沒有必要的,當然排除支持數(shù)據(jù)夸不同設備可以把數(shù)據(jù)持久化!

那咱們怎么做呢?想象一下數(shù)據(jù)被C2接收走之后,server端的數(shù)據(jù)就沒有意義了,用消息隊列方式是不是更好一點呢?

定義一個隊列,隊列不能寫在接收函數(shù)哪里,寫個全局的隊列即可,并且不能創(chuàng)建一個隊列,而是為每個用戶創(chuàng)建一個隊列。

import Queue GLOBAL_MQ = {}def new_msg(request):if request.method == 'POST':print request.POST.get('data')#獲取用戶發(fā)過來的數(shù)據(jù)data = json.loads(request.POST.get('data'))send_to = data['to']#判斷隊列里是否有這個用戶名,如果沒有新建一個隊列if send_to not in GLOBAL_MQ:GLOBAL_MQ[send_to] = Queue.Queue()data['timestamp'] = time.time()GLOBAL_MQ[send_to].put(data)return HttpResponse(GLOBAL_MQ[send_to].qsize())else:#因為隊列里目前存的是字符串所以我們需要先給他轉換為字符串request_user = str(request.user.userprofile.id)msg_lists = []#判斷是否在隊列里if request_user in GLOBAL_MQ: #判斷有多少條消息stored_msg_nums = GLOBAL_MQ[request_user].qsize()#把消息循環(huán)加入到列表中并發(fā)送for i in range(stored_msg_nums):msg_lists.append(GLOBAL_MQ[request_user].get())return HttpResponse(json.dumps(msg_lists))

使用Queue&JS實現(xiàn)長輪詢

?先看下使用下面的方法是否可行:

#因為隊列里目前存的是字符串所以我們需要先給他轉換為字符串request_user = str(request.user.userprofile.id)msg_lists = []#判斷是否在隊列里if request_user in GLOBAL_MQ:#判斷有多少條消息stored_msg_nums = GLOBAL_MQ[request_user].qsize()#如果沒有新消息if stored_msg_nums == 0:print "\033[41;1m沒有消息等待,15秒.....\033[0m"msg_lists.append(GLOBAL_MQ[request_user].get())'''如果隊列里面有沒有消息,get就會阻塞,等待有新消息之后會繼續(xù)往下走,這里如果阻塞到這里了,等有新消息過來之后,把消息加入到msg_lists中后,for循環(huán)還是不執(zhí)行的因為,這個stored_msg_mums是在上面生成的變量下面for調用這個變量的時候他還是為0等返回之后再取得時候,現(xiàn)在stored_msg_nums不是0了,就執(zhí)行執(zhí)行for循環(huán)了,然后發(fā)送數(shù)據(jù)'''#把消息循環(huán)加入到列表中并發(fā)送print "\033[43;1等待已超時......15秒.....\033[0m"for i in range(stored_msg_nums):msg_lists.append(GLOBAL_MQ[request_user].get(timeout=15))else:#創(chuàng)建一個新隊列給這個用戶GLOBAL_MQ[str(request.user.userprofile.id)] = Queue.Queue()return HttpResponse(json.dumps(msg_lists))

但是為什么不等待不超時呢?反倒重復的進行連接呢?我服務端不是已經(jīng)給他阻塞了嗎?


?這個上面的問題就涉及到Client段的JS的:

//循環(huán)接收消息var RefreshNewMsgs = setInterval(function(){//接收消息 GetNewMsgs();},3000);

你每一次的的請求,都是一個新的線程,當這個循環(huán)結束后自動釋放但是,鏈接發(fā)到服務端就被阻塞了,過了一會setInterval又有一個新的連接向服務端,所以服務端每次阻塞的都是一個新的線程,就沒有實現(xiàn)咱們想要的效果!

setInterval每一次都新起一個線程!!!

那怎么解決這個問題呢?自己調自己實現(xiàn)一個遞歸!

看代碼:

?

//接收消息function GetNewMsgs(){$.get("{% url 'get_new_msg' %}",function(callback){console.log("----->new msg:",callback);var msg_list = JSON.parse(callback);var current_open_session_id = $('#chat_hander h2').attr("contact_id");//獲取當前打開的IDvar current_open_session_type = $('#chat_hander h2').attr("contact_type");//獲取當前打開的類型,是單獨聊天還是群組聊天$.each(msg_list, function (index,msg_item) {//接收到的消息的to,是我自己 from是誰發(fā)過來的,如果是當前打開的ID和from相同說明,我現(xiàn)在正在和他聊天直接顯示即可if(msg_item.from == current_open_session_id){AddRecvMsgToChatBox(msg_item)}//判斷擋墻打開ID接收 })})}//接收消息結束

GetNewMsgs是不是一個AJAX啊!他請求完之后會執(zhí)行一個回調函數(shù)啊!?這個回調函數(shù)執(zhí)行的時候是不是代表這個請求結束了在請求結束執(zhí)行這個回調函數(shù)的時候我在執(zhí)行以下GetNewMsgs()不就行了,又發(fā)起一個請求?

?

//接收消息function GetNewMsgs(){$.get("{% url 'get_new_msg' %}",function(callback){console.log("----->new msg:",callback);var msg_list = JSON.parse(callback);var current_open_session_id = $('#chat_hander h2').attr("contact_id");//獲取當前打開的IDvar current_open_session_type = $('#chat_hander h2').attr("contact_type");//獲取當前打開的類型,是單獨聊天還是群組聊天$.each(msg_list, function (index,msg_item) {//接收到的消息的to,是我自己 from是誰發(fā)過來的,如果是當前打開的ID和from相同說明,我現(xiàn)在正在和他聊天直接顯示即可if(msg_item.from == current_open_session_id){AddRecvMsgToChatBox(msg_item)}//判斷擋墻打開ID接收});//結束循環(huán)console.log('run.....agin.....');GetNewMsgs(); })}//接收消息結束

然后把他加載到頁面加載完后自動執(zhí)行中:

//循環(huán)接收消息GetNewMsgs();

Views函數(shù)也需要重新寫下:(因為隊列里如果沒有數(shù)據(jù),設置為timeout的話就會拋異常,所以我們的抓異常~~)

代碼如下:

def new_msg(request):if request.method == 'POST':print request.POST.get('data')#獲取用戶發(fā)過來的數(shù)據(jù)data = json.loads(request.POST.get('data'))send_to = data['to']#判斷隊列里是否有這個用戶名,如果沒有新建一個隊列if send_to not in GLOBAL_MQ:GLOBAL_MQ[send_to] = Queue.Queue()data['timestamp'] = time.strftime("%Y-%m-%d %X", time.localtime())GLOBAL_MQ[send_to].put(data)return HttpResponse(GLOBAL_MQ[send_to].qsize())else:#因為隊列里目前存的是字符串所以我們需要先給他轉換為字符串request_user = str(request.user.userprofile.id)msg_lists = []#判斷是否在隊列里if request_user in GLOBAL_MQ:#判斷有多少條消息stored_msg_nums = GLOBAL_MQ[request_user].qsize()try:#如果沒有新消息if stored_msg_nums == 0:print "\033[41;1m沒有消息等待,15秒.....\033[0m"msg_lists.append(GLOBAL_MQ[request_user].get(timeout=15))'''如果隊列里面有沒有消息,get就會阻塞,等待有新消息之后會繼續(xù)往下走,這里如果阻塞到這里了,等有新消息過來之后,把消息加入到msg_lists中后,for循環(huán)還是不執(zhí)行的因為,這個stored_msg_mums是在上面生成的變量下面for調用這個變量的時候他還是為0等返回之后再取得時候,現(xiàn)在stored_msg_nums不是0了,就執(zhí)行執(zhí)行for循環(huán)了,然后發(fā)送數(shù)據(jù)'''except Exception as e:print ('error:',e)print "\033[43;1等待已超時......15秒.....\033[0m"# 把消息循環(huán)加入到列表中并發(fā)送for i in range(stored_msg_nums):msg_lists.append(GLOBAL_MQ[request_user].get())else:#創(chuàng)建一個新隊列給這個用戶GLOBAL_MQ[str(request.user.userprofile.id)] = Queue.Queue()return HttpResponse(json.dumps(msg_lists))

漂亮問題解決:

消息實時效果實現(xiàn),NICE

這個在python中,如果這么遞歸,最多1000層,他的等前面的函數(shù)執(zhí)行完后退出!看下面的結果這個CallMyself(n+1)遞歸下面的print是永遠不執(zhí)行的。

#!/usr/bin/env python #-*- coding:utf-8 -*- # Tim Luo LuoTianShuaidef CallMyself(n):print('level:',n)CallMyself(n+1)print('\033[32;1m測試輸出\033[0m')return 0CallMyself(1)

?

但是在JS中它不是這樣的,你會發(fā)現(xiàn)這個print還會執(zhí)行,說面函數(shù)執(zhí)行完了。

?

頁面中的聊天框內容,切換聊天人后聊天信息的存儲

有這么一種情況,現(xiàn)在我和ALEX聊天,我切換到和武Sir聊天了,但是窗口的內容還在怎么辦?如下圖:

?怎么做呢?多層?如果200個人呢?

怎么做呢?

可以這樣,我在和Alex聊天的時候,切換到武Sir之后,把和Alex老師聊天內容保存起來,當和武Sir結束聊天后,在返回來和Alex老師聊天的時候在把Alex老師內容展現(xiàn),把和武Sir聊天內容存起來,其他亦如此!

?

//定義一個全局變量存儲用戶信息GLOBAL_SESSION_CACHE = {'single_contact':{},'group_contact':{},};//點擊用戶打開連天窗口function OpenDialogBox(ele){//獲取與誰聊天var contact_id = $(ele).attr("contact_id");var contact_name = $(ele).attr("chat_to");var contact_type = $(ele).attr("contact_type");//先把當前聊天的內容存儲起來 DumpSession();//當前聊天內容存儲結束//修改聊天框與誰聊天var chat_to_info = "<h2 style='color:whitesmoke;text-align:center;' contact_type='"+ contact_type +"' contact_id='"+ contact_id+ "'>" + contact_name + "</h2>";$('#chat_hander').html(chat_to_info);$('.chat_contener').html(LoadSession(contact_id,contact_type));//清除未讀消息顯示var unread_msg_num_ele = $(ele).find('span')[0];$(unread_msg_num_ele).text(0);$(unread_msg_num_ele).addClass('hide')}//打開聊天窗口結束//存儲未打開的聊天內容function DumpSession2(contact_id,contact_type,content) {if(contact_id){GLOBAL_SESSION_CACHE[contact_type][contact_id] = content;}}//加載新的聊天窗口,把要打開的聊天內容重新加載上function LoadSession(current_contact_id,current_contact_type) {//通過hasOwnProperty判斷key是否存在if(GLOBAL_SESSION_CACHE[current_contact_type].hasOwnProperty(current_contact_id)){var session_html = GLOBAL_SESSION_CACHE[current_contact_type][current_contact_id];}else{var session_html = '';}//把內容返回return session_html$('.chat_contener').html(session_html);};//加載新窗口結束

上述原理:把沒被當前用戶打開的消息界面時,當有好友發(fā)消息來了,就會先把內容保存到字典里,也就是存到內存里先,到打開該好友時再html顯示。

?

?

?

?更多參考:http://www.cnblogs.com/alex3714/articles/5311625.html

?

轉載于:https://www.cnblogs.com/fengzaoye/p/5900647.html

總結

以上是生活随笔為你收集整理的django-web聊天的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

中文字幕在线观看免费高清完整版 | 国产在线更新 | 久久电影日韩 | 亚洲午夜精品一区二区三区电影院 | 午夜视频欧美 | 超碰在线91 | 一区二区三区韩国免费中文网站 | 96久久久 | 精品一区二区亚洲 | 国产成人福利在线 | 青青久草在线 | 欧美性网站 | 中文有码在线 | 成人影音av | 久久九九精品久久 | 日韩在线免费视频 | 一本一道波多野毛片中文在线 | 亚洲三级av | 亚洲福利精品 | 亚洲视频大全 | 亚洲精品男人天堂 | 91av视频网 | 在线视频 精品 | 亚洲精品视频大全 | 激情综合一区 | 久久精品国产免费观看 | 五月精品 | 欧美精品一区二区三区一线天视频 | 99热最新在线 | 婷婷激情在线 | 99视频精品 | 日韩网站在线播放 | 久久综合色婷婷 | 国产99精品在线观看 | 91污在线观看 | 久热免费在线观看 | 国产精品一区二区免费视频 | 国产亚洲精品美女 | 国产成人一二片 | 麻豆91精品91久久久 | 久久av福利 | 亚洲mv大片欧洲mv大片免费 | 特级毛片在线免费观看 | 91热爆视频 | 一级做a视频 | 91视视频在线直接观看在线看网页在线看 | 国产一区二区在线播放视频 | 一区二区视频电影在线观看 | 色噜噜狠狠色综合中国 | 天天干天天搞天天射 | www.成人sex| 久久国内精品视频 | 夜夜干夜夜 | 精品亚洲二区 | 久久国内精品视频 | 久久久天天操 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 国产精品一区二区中文字幕 | av中文字幕免费在线观看 | 免费观看不卡av | 一区三区视频在线观看 | 亚洲精品在线二区 | 激情大尺度视频 | 亚洲成av人片 | 中文乱幕日产无线码1区 | 亚洲成人资源网 | 狠狠狠干| 在线 欧美 日韩 | 久草精品视频在线看网站免费 | 成年人av在线播放 | 中文字幕av一区二区三区四区 | 国产成人一区二区三区在线观看 | 久久久国产精品免费 | 最近中文字幕在线播放 | 中文字幕中文 | 亚洲精品一区中文字幕乱码 | 国产精品久久久久久久午夜片 | 免费三级骚 | 在线观看网站你懂的 | 在线黄色免费av | 婷婷激情五月 | 亚洲影院一区 | 日韩国产精品毛片 | 91精品啪在线观看国产81旧版 | 免费黄在线观看 | 国产精品美女免费 | 日韩欧美电影在线观看 | 久热久草在线 | 午夜视频在线观看一区二区三区 | 99一区二区三区 | 中文字幕色播 | 一区二区三高清 | 美女久久久久久久久久久 | 97看片网| 日日操日日插 | 丁香激情综合 | 99久久精品免费一区 | 成年人看片网站 | 69性欧美| 日日操天天操狠狠操 | 欧美精品被 | 黄a网 | 五月婷婷av在线 | 亚洲动漫在线观看 | 在线观看免费日韩 | 免费在线观看av不卡 | 国产精品24小时在线观看 | 国产精品资源在线观看 | 不卡精品视频 | 国产日韩精品在线观看 | 在线免费看片 | 亚洲精品www久久久久久 | 在线看国产日韩 | 久久精品99久久久久久2456 | 人人视频网站 | 99视频在线精品免费观看2 | 日韩精品一区二区三区免费观看视频 | 久草视频网 | 在线免费国产视频 | 伊人一级 | 91黄色免费看 | 日韩在线观看第一页 | 人人澡人人干 | 在线观看v片 | 亚洲精品视频观看 | 久草在线手机视频 | 在线日本v二区不卡 | 国产成人一区三区 | 九九热在线视频免费观看 | 亚洲成人资源网 | 日韩精品久久久久久 | 超碰在线天天 | 一个色综合网站 | av一级片网站 | 成人免费观看网站 | 天天干天天干天天 | www亚洲视频 | 久久刺激视频 | 日韩成人在线一区二区 | 欧美 日韩 国产 成人 在线 | 成人久久视频 | 色香蕉视频 | 国产精品久久久视频 | 91免费高清在线观看 | 丁香激情五月 | 91av免费观看 | 午夜精品久久久99热福利 | www操操| 欧美一级视频免费 | 91免费网址 | 成人免费看片98欧美 | 久久国产成人午夜av影院宅 | 能在线看的av | 久免费 | 欧美精彩视频 | 夜夜爽天天爽 | 人人干人人干人人干 | 97成人在线免费视频 | 国产精品美女久久久免费 | 四虎影视成人永久免费观看亚洲欧美 | 国产麻豆精品在线观看 | 成人亚洲网 | 狠狠色丁香九九婷婷综合五月 | 在线播放精品一区二区三区 | 狠狠狠狠狠操 | 91亚色在线观看 | 欧美性生爱 | 久久精品美女视频 | 天天草天天干天天 | 午夜精品视频福利 | 精品亚洲视频在线观看 | 丰满少妇高潮在线观看 | 欧美日韩国产三级 | 中文字幕在线观看免费高清完整版 | 天天爱天天射 | 国产又黄又爽无遮挡 | 午夜久久电影网 | 九九热在线免费观看 | 99在线视频播放 | 亚洲国产欧美一区二区三区丁香婷 | 国内一级片在线观看 | 国产成人三级在线 | 国色天香第二季 | 久久久国产精品亚洲一区 | 免费一级特黄毛大片 | 久久午夜精品影院一区 | 91桃色在线免费观看 | 久久久国产毛片 | 精选久久| 成人免费91 | www.午夜| 国产一级特黄毛片在线毛片 | 久久精品视频国产 | 丁香婷婷激情国产高清秒播 | 亚洲永久av | 在线免费视频 你懂得 | 久久国产区 | 不卡的av| 97电影手机版 | 国内精品久久久久久久久久久 | 91九色视频观看 | 91av国产视频 | 天天操天天操天天 | 日韩在线观看第一页 | 99欧美精品 | 欧美一级性生活 | se视频网址| 亚洲精品ww| 成人一区二区三区中文字幕 | 久久视讯| 国产精品初高中精品久久 | 91麻豆免费视频 | av在线日韩 | 国产免费一区二区三区最新 | 国产一区在线免费观看视频 | 色综合色综合久久综合频道88 | 亚洲一区二区三区毛片 | 天天草天天干天天射 | 五月天婷婷在线观看视频 | 午夜av免费观看 | 丁香综合av| a黄色 | 亚洲精品日韩av | 99视频免费看 | 激情影音先锋 | h动漫中文字幕 | 欧美在线观看视频一区二区 | 欧美日韩不卡一区二区三区 | 国产成人av一区二区三区在线观看 | 亚洲精品在 | 亚洲天堂自拍视频 | 欧美资源在线观看 | 欧日韩在线视频 | 国产网红在线 | 国产乱对白刺激视频不卡 | 丁香久久综合 | 午夜三级福利 | 91视频 - 88av| 日韩精品一区二 | 亚洲视频axxx | 中文字幕国产一区 | 国内偷拍精品视频 | 亚洲综合激情 | 在线视频麻豆 | 欧美精品一区二区在线观看 | 国产精品麻豆三级一区视频 | 国产99久久久精品 | 免费人做人爱www的视 | 久久久久国产视频 | 亚洲区另类春色综合小说校园片 | 免费看国产精品 | 成人资源在线播放 | 九九久久婷婷 | 亚洲无人区小视频 | 日韩精品一区二区久久 | 中文字幕一区二区三区在线播放 | 在线电影日韩 | 手机av在线不卡 | 亚洲不卡123 | 九色在线视频 | 综合久色| 国产在线a视频 | 黄色av网站在线免费观看 | 射九九 | 婷婷日 | 日韩中文字幕第一页 | 99久免费精品视频在线观看 | 深爱激情五月婷婷 | av电影在线免费观看 | 国产精品欧美日韩在线观看 | 日日操狠狠干 | 91精品视频免费在线观看 | 国产精品白丝jk白祙 | 激情深爱五月 | 亚洲专区免费观看 | 在线观看涩涩 | 福利一区在线视频 | 国产精品美乳一区二区免费 | 国产精品video爽爽爽爽 | 色播亚洲婷婷 | 香蕉视频免费看 | 丰满少妇高潮在线观看 | 久久人人爽人人爽人人 | 精品亚洲一区二区三区 | 99视频精品免费视频 | 91aaa在线观看 | 久久草 | 日韩视频欧美视频 | 丁香婷婷亚洲 | 免费成人在线观看视频 | 成人禁用看黄a在线 | 国产精品久久久久一区二区国产 | 欧美精品久久久久久久久久白贞 | 国产美女网| 97精产国品一二三产区在线 | 91欧美视频网站 | 91完整版在线观看 | 免费看黄色91 | 在线免费观看国产 | 九九九在线 | 免费观看国产精品视频 | 久久伦理电影网 | 日韩电影在线看 | 一区二区三区手机在线观看 | 中文字幕国产精品 | 女人18精品一区二区三区 | 久久艹国产视频 | 高清色免费 | 丁香激情五月 | 天天透天天插 | 久视频在线 | 精品国精品自拍自在线 | 国产91精品看黄网站在线观看动漫 | av不卡免费看 | 伊人手机在线 | 香蕉97视频观看在线观看 | 中文字幕在线免费观看 | 在线国产一区 | 伊人干综合 | 亚洲午夜久久久综合37日本 | 日韩精品中文字幕在线播放 | 国产视频二区三区 | 久久久久国产精品一区二区 | 欧美另类z0zx | 在线看欧美 | 香蕉在线影院 | 91av手机在线观看 | 精品在线亚洲视频 | 欧美孕妇视频 | 亚洲精品系列 | 久草在线最新视频 | 国产淫a| 爱色av.com| 五月天婷婷视频 | 99人成在线观看视频 | 9草在线| 丝袜护士aⅴ在线白丝护士 天天综合精品 | se视频网址 | 91完整版| 日韩久久影院 | 国产成人一区二区精品非洲 | 国产在线观看99 | 黄色一区三区 | 成人久久久精品国产乱码一区二区 | 成人av手机在线 | 99久久久国产精品免费观看 | 亚洲国产午夜精品 | av中文字幕第一页 | 激情深爱 | 国产97在线看 | 日韩电影在线观看一区 | 中文高清av | 国产日韩欧美综合在线 | 免费在线观看毛片网站 | 国产精品入口麻豆www | 亚洲三级在线播放 | 国产精品自拍在线 | 久久一区二| 色播五月激情五月 | 久久99欧美| 午夜精品剧场 | 久久久国产精品麻豆 | 去干成人网 | 超碰97公开 | 久久免费99| 国产香蕉视频 | 久久久亚洲网站 | 香蕉网在线 | 99精品一级欧美片免费播放 | 日韩成人av在线 | 在线观看岛国av | 国产精品国产三级国产不产一地 | 在线国产激情视频 | 视频在线观看入口黄最新永久免费国产 | 免费av网站观看 | 四虎免费av | 97人人模人人爽人人喊网 | 超碰人人在| 狠狠色丁香婷婷综合久小说久 | 中文字幕在线一区二区三区 | 日韩高清精品免费观看 | 成年人毛片在线观看 | 色婷婷www | 色国产在线 | 超碰人人草 | 四虎国产精品成人免费影视 | 国产精品二区三区 | 一区二区伦理电影 | 在线观看久久久久久 | 黄色片网站免费 | 久久久久免费看 | 丁香激情综合 | 日韩av免费一区二区 | av免费福利| 五月综合 | 久久久www成人免费精品张筱雨 | 97伊人网 | 免费三级av| 99国产成+人+综合+亚洲 欧美 | 激情五月婷婷综合 | 在线观看国产日韩 | 4p变态网欧美系列 | 免费观看国产视频 | 日本久久久久 | 国产一区二区观看 | 亚洲国产精久久久久久久 | 欧美一区在线观看视频 | 91免费国产在线观看 | 久久综合精品一区 | 精品国产中文字幕 | 中中文字幕av | 亚洲少妇自拍 | 国产一在线精品一区在线观看 | 国产中年夫妇高潮精品视频 | 国产亚洲视频在线观看 | 中文字幕人成不卡一区 | 国产一区二区三区免费在线 | 久久99亚洲精品 | 中文字幕激情 | 久久网站最新地址 | 色综合久久网 | 久久久蜜桃一区二区 | 日韩午夜精品 | 欧美另类色图 | 色综合久久88 | 色婷久久 | 亚洲艳情| 中文字幕在线观看第二页 | 91精品在线免费观看视频 | 日本在线视频网址 | 黄色精品在线看 | 日韩av成人在线 | 一区二区三区三区在线 | 91精品亚洲影视在线观看 | 91成人免费视频 | 伊人久久五月天 | 中文字幕专区高清在线观看 | 激情视频一区二区三区 | 超碰在线网| 亚洲第一av在线播放 | 99精品久久精品一区二区 | 国产一二三区在线观看 | 国产精品成人一区二区 | 国产视频二区三区 | adc在线观看 | 九草视频在线观看 | 日韩视频免费观看高清完整版在线 | 精品久久网站 | 在线观看一区 | 欧美精品一区二区三区一线天视频 | www视频免费在线观看 | 99视频在线精品 | 国产成人亚洲在线观看 | 九七视频在线观看 | 久久久久看片 | 一区二区三区在线免费观看视频 | 97人人人人 | 国产 一区二区三区 在线 | 精品国产一区二区三区在线 | 在线观看国产中文字幕 | 人人草在线视频 | 日韩一区二区三区免费电影 | 91天堂影院 | 黄色片免费在线 | 天天综合日| 国产又黄又爽又猛视频日本 | 日日干综合 | 51精品国自产在线 | 99r在线精品 | 天天插天天干天天操 | 成人国产精品久久久 | 国产精品永久久久久久久www | 91亚洲精品久久久中文字幕 | 夜又临在线观看 | 天天射天天操天天干 | 啪啪凸凸 | 黄视频网站大全 | 超碰在线免费97 | 天天躁天天操 | 久草在线欧美 | 99热这里| 国产精品久久久久久久久久白浆 | 国产中文字幕久久 | 久久99精品国产99久久 | 国产精品久久麻豆 | 中文字幕人成人 | 国产黄色片免费观看 | 日本公乱妇视频 | 在线 影视 一区 | 97超碰成人在线 | 欧美特一级 | 香蕉视频在线视频 | 激情图片区 | 日韩在线播放欧美字幕 | 91亚洲视频在线观看 | 久久久一本精品99久久精品66 | 欧美日本一二三 | 干干日日| 国产精品久久久久久久午夜片 | 狠狠操导航 | 激情视频国产 | 色婷婷综合成人av | 亚洲精品资源在线观看 | 麻豆视频在线 | 国产精品一区二区三区在线播放 | 久久女同性恋中文字幕 | 国产在线观看h | 欧美日韩一区二区视频在线观看 | 久久黄色片 | 久草精品电影 | 91精品久久久久久久久久入口 | 国产视频美女 | 丁香六月色| 国产精品99久久久久久武松影视 | 婷婷丁香六月 | 91网在线| 精品1区2区3区 | 久久电影国产免费久久电影 | 国产视频精品久久 | 夜色资源站国产www在线视频 | 国产三级精品三级在线观看 | 久久综合久久久久88 | 欧美性生爱 | 国产高清精品在线 | 国产特级毛片aaaaaa毛片 | 亚洲精品乱码久久 | 日韩午夜精品福利 | 国产免费久久精品 | 国产高清视频在线播放 | 四虎影视8848dvd | 婷婷在线综合 | 人人精久| 毛片无卡免费无播放器 | 成人午夜精品久久久久久久3d | 制服丝袜成人在线 | 亚洲一级黄色大片 | 亚洲精品福利在线 | 91成人天堂久久成人 | 欧美成天堂网地址 | 色综合久久久久综合体 | 麻豆一区在线观看 | 麻豆国产视频下载 | 欧美性护士 | 9幺看片 | 伊人视频 | 91九色在线观看视频 | 色吊丝av中文字幕 | 午夜视频在线观看一区 | 三级av在线免费观看 | 久草网视频在线观看 | 亚洲在线视频免费观看 | 波多野结衣精品视频 | 一级片视频在线 | 色鬼综合网 | 超碰国产在线 | 亚洲国产人午在线一二区 | 日韩综合一区二区 | 久久精品波多野结衣 | 手机在线免费av | 免费国产ww| 成人免费 在线播放 | www好男人 | 四虎影视久久久 | 狠狠插狠狠干 | 最近中文字幕 | 久草视频在线资源 | 在线韩国电影免费观影完整版 | 九九视频精品免费 | 波多野结衣在线视频一区 | a视频在线观看免费 | 日日干夜夜干 | 欧美xxxxx在线视频 | 国产黄色av影视 | 一区二区三区www | 成人动漫一区二区三区 | 激情自拍av | 午夜美女av | 国产精品视频资源 | 在线观看视频91 | 日韩在线视频一区二区三区 | 91精品影视 | 日韩久久久久久 | av免费电影网站 | 成人午夜电影网站 | av 一区 二区 久久 | 日韩精品在线观看视频 | 国产亚洲精品bv在线观看 | 欧美影片 | 免费视频99 | 日韩av不卡在线播放 | 精品特级毛片 | 日韩精品影视 | 亚洲第一香蕉视频 | 国产精品 中文在线 | 麻豆视频免费在线播放 | 91精品啪在线观看国产 | 亚洲国产美女久久久久 | 午夜视频免费播放 | 欧美亚洲免费在线一区 | 国产日韩精品在线观看 | 麻豆国产视频下载 | 亚洲 欧美日韩 国产 中文 | 99视频精品视频高清免费 | 99视频精品全国免费 | 亚洲精品在线免费看 | 在线之家免费在线观看电影 | 国产精品videoxxxx | 国产精品亚 | 五月激情天 | 99久久夜色精品国产亚洲 | av在线日韩 | 亚洲精品午夜一区人人爽 | 成人免费在线观看av | 九九久久免费视频 | 天天草网站| 亚洲小视频在线观看 | 天堂网av 在线 | 麻豆91精品91久久久 | 一级免费片 | 亚州视频在线 | 亚洲精品一区二区精华 | 人人精久| av免费黄色| 久草免费福利在线观看 | 亚洲狠狠干 | 在线观看国产区 | 九九热中文字幕 | 国产一区二区三区在线免费观看 | 国产成人精品一区二区三区在线观看 | 久久成年视频 | 国产色影院 | 国产无遮挡猛进猛出免费软件 | 久久99中文字幕 | 五月天综合 | 亚洲经典视频 | 免费人成在线观看网站 | 日韩手机视频 | 狠狠躁夜夜a产精品视频 | 亚洲最大av网 | 4438全国亚洲精品在线观看视频 | 欧美激情综合五月色丁香小说 | 久久欧美在线电影 | 国产福利av | 手机在线欧美 | 午夜丁香视频在线观看 | 国产在线不卡视频 | 日韩欧美视频在线播放 | 伊人国产视频 | 丁香六月国产 | 亚洲精选视频在线 | 色激情在线 | 一级片免费观看 | 亚洲人成在线观看 | 国模视频一区二区三区 | 国产精品久久久久久五月尺 | 欧美日韩国产mv | 青草草在线视频 | 日韩久久久 | 成人午夜免费福利 | 欧美成人在线免费观看 | 人人看黄色 | 日韩在线视频网 | 韩国视频一区二区三区 | 欧美日韩一级在线 | 在线成人小视频 | 91黄视频在线 | 国产精品99精品久久免费 | 九九热在线免费观看 | 欧美日韩在线免费观看视频 | 2023年中文无字幕文字 | a视频免费在线观看 | 在线观看一区 | 久久婷五月 | 日日爱夜夜爱 | 国产不卡在线 | 日日碰狠狠添天天爽超碰97久久 | 亚洲欧美成人 | 综合久久精品 | 日本性xxx | 日韩在线观看一区二区三区 | 一级电影免费在线观看 | 成人在线免费看视频 | 国产在线观看h | 婷婷中文字幕 | a视频在线观看免费 | 成人中文字幕在线观看 | 国产精彩视频一区 | 国产一区二区在线影院 | 在线国产专区 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 五月婷婷电影网 | 国产精品女人久久久 | 国产精品视频免费观看 | 亚洲一区视频免费观看 | 色av色av色av | 日韩在线免费高清视频 | 中文字幕一区二区在线播放 | 久久96| 国产精品久久久久9999吃药 | 午夜在线看| 久久久久久久久久久电影 | 欧洲成人av | 91视频在线免费下载 | 日韩激情在线视频 | 日韩二三区 | 96国产精品视频 | 手机在线观看国产精品 | 亚洲天堂网在线视频观看 | 精品三级av | 中文国产成人精品久久一 | 亚洲一级片免费观看 | 国产亚洲精品成人av久久ww | 97超碰人人澡人人 | 中文字幕在线影院 | 亚洲欧美少妇 | 亚av在线| 色噜噜在线观看 | www.888av| 黄色日本免费 | 久久国产亚洲 | 九九电影在线 | 国产精品一区二区三区在线免费观看 | 亚洲成人av免费 | 91福利视频免费 | 久草91视频 | 91精品伦理| 在线观看av中文字幕 | 国产精品福利小视频 | 久久精品视频免费播放 | 五月激情片 | 成人av在线影院 | 中文字幕网站视频在线 | 精品在线观看一区二区三区 | 看全黄大色黄大片 | 国产精品久一 | 久久69精品 | 欧美成人理伦片 | 久久99精品久久久久久清纯直播 | 青青河边草观看完整版高清 | www.国产在线 | 黄色毛片在线观看 | 天天天色综合 | 黄色日本免费 | 国产免费叼嘿网站免费 | 久久成人高清视频 | 91视频在线免费下载 | 亚洲午夜在线视频 | 色大片免费看 | 色在线视频| 亚洲国产成人在线观看 | 国产视频91在线 | 激情小说久久 | 午夜18视频在线观看 | 国内精品久久久久影院一蜜桃 | 在线观看国产福利片 | 精品久久免费 | 97超碰中文字幕 | 国产精品ⅴa有声小说 | 国产精品黄网站在线观看 | 色国产精品 | 美女在线国产 | 最近中文字幕大全 | 国产视频一区二区三区在线 | 黄色一级免费 | 色综合久久久久久久久五月 | 中日韩在线视频 | 久久久片 | 久久国产精品精品国产色婷婷 | 欧美一级性视频 | 久久国产精品久久久 | 国产精品午夜在线 | 亚洲区视频在线观看 | 91在线视频| 欧美性大战 | 久久久久久综合 | 欧美激情va永久在线播放 | 9免费视频 | 伊人黄| 97香蕉久久国产在线观看 | 午夜av色| 欧美在线观看视频 | 天天爱综合 | 国产成人av一区二区三区在线观看 | 美女免费黄网站 | www色com | 蜜桃视频在线观看一区 | 久久综合色天天久久综合图片 | 成人av在线影院 | 麻豆久久 | 日韩毛片一区 | 日韩av资源在线观看 | 中文字幕在线看视频国产中文版 | 久久午夜免费视频 | 最近更新中文字幕 | 天堂在线一区二区三区 | 人人揉人人揉人人揉人人揉97 | 香蕉视频在线观看免费 | 在线 视频 一区二区 | 一级黄色片在线免费观看 | 日日草夜夜操 | 最新中文字幕在线资源 | 久久国产精品免费一区 | 亚洲黄色在线免费观看 | 日韩欧美专区 | 91精品视频免费看 | 国产视频在 | 日韩久久久| 国产黄色片免费观看 | 干干操操| 国产黄a三级三级三级三级三级 | 色插综合| 中文字幕在线观看免费高清电影 | 美女久久久久久久久久 | 天天插狠狠插 | 成人丝袜 | 免费视频一二三区 | 久久久精品一区二区 | 日韩精品免费一线在线观看 | 91精品国产九九九久久久亚洲 | 免费看色的网站 | 欧美久久综合 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 国产剧情一区二区 | 黄色免费大片 | 国内精品中文字幕 | 69久久久 | 成 人 a v天堂 | 亚洲成色777777在线观看影院 | 欧美午夜视频在线 | 午夜在线观看一区 | 97香蕉久久超级碰碰高清版 | 久久久久激情电影 | 二区在线播放 | 欧美xxxxx在线视频 | 九九有精品 | 久久99久久99精品免观看软件 | 欧美性生活一级片 | 中文在线a∨在线 | 亚洲视频播放 | 五月激情六月丁香 | 精品影院 | 国产91精品久久久久久 | 国产免费观看av | 亚洲综合成人婷婷小说 | 国产成人性色生活片 | 96精品高清视频在线观看软件特色 | 黄色大片日本 | 亚洲欧美国产精品va在线观看 | 嫩嫩影院理论片 | 97精品视频在线播放 | 国产免费高清视频 | 久久视频网址 | 91看片网址 | 亚洲精品66| 久久免费a| 免费看的黄网站 | 久草免费色站 | 日本在线观看中文字幕无线观看 | 久久曰视频 | 久久久精品 | 久久视频这里有久久精品视频11 | 国产精品久久久久久久午夜片 | 手机av在线网站 | 91桃色在线播放 | 中文字幕亚洲五码 | 亚洲欧美视频一区二区三区 | 国产一区二区在线播放视频 | 国产一线二线三线性视频 | 黄色毛片电影 | 免费看黄的视频 | 97免费视频在线 | 一区二区中文字幕在线播放 | 四虎在线永久免费观看 | 久久人91精品久久久久久不卡 | 午夜精品久久久久久久99 | 天天操月月操 | 丁香高清视频在线看看 | 超碰在线亚洲 | 久久99在线视频 | 色av男人的天堂免费在线 | 免费亚洲视频在线观看 | 久久精品视频网址 | 五月婷婷视频在线 | 九九视频网站 | 天天干,夜夜爽 | 国产精品日韩久久久久 | av在线成人 | 久久综合五月婷婷 | 日韩一区二区三区在线观看 | 精品久久久成人 | 欧美精品久久久久久久久久久 | 免费情缘 | 精品免费久久久久 | 日韩免费观看一区二区 | 91中文字幕视频 | 免费观看视频的网站 | www.久久久精品 | wwwwww色| 中文字幕在线观看完整版电影 | 亚洲精品福利视频 | 综合国产在线观看 | 在线观看中文字幕dvd播放 | 亚洲午夜久久久久久久久 | 精品久久久99 | 亚洲国产中文字幕在线观看 | 中文字幕在线观看视频一区 | 九九久久免费 | 久久99这里只有精品 | aⅴ精品av导航 | 久久99网 | 久久久www成人免费毛片 | 午夜久久久影院 | 午夜精品福利在线 | 日韩av午夜在线观看 | 在线免费高清一区二区三区 | 国产综合精品久久 | www.777奇米| 成人久久18免费网站麻豆 | 婷婷网五月天 | 日本h视频在线观看 | 欧美国产91 | 中文字幕av在线不卡 | 国产精品精品国产 | 欧美日韩免费一区二区三区 | 草久在线观看视频 | 日日色综合 | 中文字字幕在线 | 国产中文在线播放 | 99视频99| www黄在线| 99精品国产视频 | 日韩精品 在线视频 | 国内久久久久 | 国产.精品.日韩.另类.中文.在线.播放 | 在线观看日韩精品 | 欧美一区二区三区激情视频 | 久久精品9| av中文字幕日韩 | 欧美日韩网站 | 免费亚洲成人 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 婷婷激情在线观看 | 91理论片午午伦夜理片久久 | 国产在线观看xxx | 久久久久综合精品福利啪啪 | 国产精品第72页 | 成人毛片在线观看视频 | 黄色亚洲大片免费在线观看 | 91麻豆精品一区二区三区 | 九九交易行官网 | 亚洲欧洲视频 | 在线精品视频免费播放 | 亚洲作爱 | 久久精品亚洲国产 | 狠狠狠综合 | 国产精品第二十页 | 男女靠逼app | 91麻豆精品国产91 | 久久综合色播五月 | 欧美国产三区 | 啪啪免费视频网站 | 国产手机视频在线观看 | 欧美性色xo影院 | 中文字幕亚洲情99在线 | 中文字幕日韩有码 | 日韩免费中文字幕 | 欧美一级免费在线 | 亚州精品成人 | 人人插超碰 | 日本精品一区二区三区在线播放视频 | 婷婷视频在线播放 | 免费a v视频 | 国产精品成人久久久久久久 | 操操操天天操 | 亚洲精品2区| 一区二区三区中文字幕在线 | 色网影音先锋 | 中文在线字幕观看电影 | 一区二区三区四区精品视频 | 日韩久久片 | 日韩一区视频在线 | 色网影音先锋 | 精品久久久久一区二区国产 | 国产高清视频免费观看 | 日韩二区精品 | 久久视频精品 | 国产黄色片免费观看 | 偷拍福利视频一区二区三区 | 国产香蕉视频在线观看 | 国产精品久久久久久久久久新婚 | 男女精品久久 | 天天操夜夜逼 | 99中文字幕在线观看 | 精品国产日本 | 91最新在线视频 | 91禁看片 | 成人四虎影院 | 国产精品破处视频 |