久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

JS如何實(shí)現(xiàn)基于websocket的多端橋接平臺(tái)

瀏覽:142日期:2024-03-25 17:53:24
目錄1. 要調(diào)試什么2. websocket 的特性3. 建立 socket 連接3.1 如何創(chuàng)建房間3.2 客戶端的斷線重現(xiàn)機(jī)制3.3 心跳檢測4. 進(jìn)行接口的調(diào)試4.1 接口的調(diào)試4.2 歷史記錄的存儲(chǔ)5. 新聞客戶端內(nèi) jsapi 的調(diào)試6. 總結(jié)6.1 為什么要手動(dòng)輸入 serverId6.2 如何保證一個(gè)客戶端的 socket 請(qǐng)求都進(jìn)入到同一個(gè)進(jìn)程中6.3 多進(jìn)程之間的通信1. 要調(diào)試什么

我們主要要知道調(diào)試什么,最終回去到什么樣子的結(jié)果:

1.調(diào)試接口,傳入接口地址,即可獲取對(duì)應(yīng)的結(jié)果;并且可以同時(shí)調(diào)試多個(gè)設(shè)備;

2.調(diào)試 jsapi,輸入對(duì)應(yīng)的方法,則即可在新聞客戶端中展示出效果。

在調(diào)試接口方面,其實(shí)我們有一種方法可以方便地進(jìn)行調(diào)試,但有兩個(gè)限制條件:Android系統(tǒng)和測試版的客戶端,這樣通過 Chrome 瀏覽器進(jìn)行橋接。但這種方式,在 iOS 系統(tǒng)和正式版的客戶端中,就失效了。

2. websocket 的特性

WebSocket 協(xié)議的最大特點(diǎn)就是,服務(wù)器可以主動(dòng)向客戶端推送信息,客戶端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對(duì)話,屬于服務(wù)器推送技術(shù)的一種。

JS如何實(shí)現(xiàn)基于websocket的多端橋接平臺(tái)

其他特點(diǎn)包括:

1.建立在 TCP 協(xié)議之上,服務(wù)器端的實(shí)現(xiàn)比較容易。

2.與 HTTP 協(xié)議有著良好的兼容性。默認(rèn)端口也是 80 和 443,并且握手階段采用 HTTP 協(xié)議,因此握手時(shí)不容易屏蔽,能通過各種 HTTP 代理服務(wù)器。

3.數(shù)據(jù)格式比較輕量,性能開銷小,通信高效。

4.可以發(fā)送文本,也可以發(fā)送二進(jìn)制數(shù)據(jù)。

5.沒有同源限制,客戶端可以與任意服務(wù)器通信。

6.協(xié)議標(biāo)識(shí)符是 ws(如果加密,則為 wss),服務(wù)器網(wǎng)址就是 URL。

3. 建立 socket 連接

為了滿足我們在第 1 部分設(shè)置的調(diào)試目標(biāo),我們這里要實(shí)現(xiàn)的功能有:

1.PC 端相當(dāng)于房主,建立房間后,其他設(shè)備可以進(jìn)入到該房間,一個(gè)設(shè)備只能進(jìn)入到一個(gè)房間中;

2.客戶端有斷線重連的機(jī)制,當(dāng)客戶端斷開連接后,可以嘗試重連;

3.服務(wù)端維護(hù)一個(gè)心跳檢測的機(jī)制,當(dāng)有新設(shè)備進(jìn)入或者之前的設(shè)備退出時(shí),要及時(shí)地更新當(dāng)前房間中的設(shè)備列表;

3.1 如何創(chuàng)建房間

在瀏覽器上輸入房間的標(biāo)識(shí),若瀏覽器與服務(wù)端成功建立起 websocket 連接后,則在瀏覽器端創(chuàng)建對(duì)應(yīng)的二維碼。用微信/手 Q 或者其他掃描二維碼的設(shè)備進(jìn)行掃描,即可通過提前設(shè)定的 scheme 協(xié)議,跳轉(zhuǎn)到新聞客戶端里對(duì)應(yīng)的調(diào)試頁面。

若客戶端里也與服務(wù)端成功建立 websocket 連接后,則相當(dāng)于進(jìn)入房間成功,PC 端會(huì)出現(xiàn)一個(gè)對(duì)應(yīng)的圖標(biāo)。

ws.open(serverId) .then(() => {// PC 端成功建立連接后setStatus('linked'); // 更新頁面的狀態(tài)// 生成二維碼qrcode(`/tools/index.html#/newslist?serverId=${serverId}`).then(url => { setCodeUrl(url);}); }) .catch(e => {// 建立連接失敗console.error(e);Modal.error({ title: '當(dāng)前服務(wù)器出現(xiàn)問題啦,正在搶修中' });setStatus('unlink'); });3.2 客戶端的斷線重現(xiàn)機(jī)制

在移動(dòng)端中的頁面有個(gè)特點(diǎn),當(dāng)屏幕黑屏后,或者因?yàn)槠渌脑?,客戶端?huì)自動(dòng)斷開 socket 連接。

為了方便進(jìn)行調(diào)試,而不是每次在斷開連接后,需要手動(dòng)點(diǎn)擊,或者重新進(jìn)入頁面。我在這里實(shí)現(xiàn)了一個(gè)簡單的斷線重連機(jī)制。websocket 連接斷開時(shí),會(huì)執(zhí)行onclose的回調(diào),因此,我們可以在 onclose 事件中進(jìn)行再次重連的機(jī)制。

同時(shí),為了防止無限制的重連嘗試,我在這里也進(jìn)行了下限制,最多重連 3 次,3 次后還沒有重新連接上,則停止連接;若重連成功,則將重連次數(shù)重置為 3。

斷開連接時(shí):

// 斷開連接時(shí)ws.onclose(() => { timer = setTimeout(() => {setStatus('unlink');setCodeUrl(''); }, 500); reconnectNum--; // 限制重連的次數(shù) if (reconnectNum >= 0) {_open(); // 嘗試重新連接 }});

連接成功時(shí):

ws.open(serverId).then(() => { // PC 端成功建立連接后 +reconnectNum = 3; +timer && clearTimeout(timer); setStatus('linked'); // 更新頁面的狀態(tài) // 生成二維碼 qrcode(`/tools/index.html#/newslist?serverId=${serverId}`).then(url => {setCodeUrl(url); });});3.3 心跳檢測

就像我們在 QQ 群里聊天一樣,哪個(gè)人在線要一目了然,若有人進(jìn)入到聊天群,或者有人退出了,都要通知房主,并及時(shí)地更新群列表。

心跳檢測主要有 2 種方式:客戶端發(fā)起的心跳檢測和服務(wù)端維護(hù)的心跳檢測。我們稍微講解下這兩種:

1.客戶端發(fā)起的心跳:每隔一段固定的時(shí)間,向服務(wù)器端發(fā)送一個(gè) ping 數(shù)據(jù),如果在正常的情況下,服務(wù)器會(huì)返回一個(gè) pong 給客戶端,如果客戶端通過 onmessage 事件能監(jiān)聽到的話,說明請(qǐng)求正常。

2.服務(wù)端維護(hù)的心跳:每隔一段時(shí)間,檢測所有連接的狀態(tài),若狀態(tài)為斷開時(shí),則將其從列表中剔除。

我在這里使用的是服務(wù)端維護(hù)的心跳檢測,當(dāng)房間里的設(shè)備數(shù)量發(fā)生變化時(shí),則服務(wù)端向客戶端推送最新的設(shè)備列表:

// 持續(xù)監(jiān)測客戶端的連接狀態(tài)// 若已斷開連接,則將客戶端清除let aliveClients = new Map();let lastAliveLength = new Map();setInterval(() => { let clients = {}; wss.clients.forEach(function each(ws) {if (ws.isAlive === false) { return ws.terminate();}const serverId = ws.serverId;if (clients[serverId]) { clients[serverId].push(ws);} else { clients[serverId] = [ws];}ws.isAlive = false;ws.ping(() => {}); }); for (let serverId in clients) {aliveClients.set(serverId, clients[serverId]);const length = clients[serverId].length;// 若當(dāng)前serverId連接的設(shè)備數(shù)量發(fā)生變化,則發(fā)送消息if (length !== lastAliveLength.get(serverId)) { // 想當(dāng)前所有serverId的設(shè)備發(fā)送消息 sendAll('devices', clients[serverId], serverId); // 存儲(chǔ)上次當(dāng)前serverId的連接數(shù) lastAliveLength.set(serverId, length);} } const size = wss.clients.size; console.log('connection num: ', size, new Date().toTimeString());}, 2000);4. 進(jìn)行接口的調(diào)試

我們在第 3 節(jié)已經(jīng)成功把 PC 端和新聞客戶端連接起來了,那么怎么進(jìn)行雙端數(shù)據(jù)的通信?

4.1 接口的調(diào)試

我們在這里要傳入 3 個(gè)字段:

1.serverId: 即房間號(hào),服務(wù)端要將信息廣播給所有帶有 serverId 的成員;

2.type: 類型,這條指令是要做什么的;

3.msg: 傳入的參數(shù);

在接口調(diào)試的過程中,則傳入的參數(shù)是:

const params = { type: 'post', // 類型 msg: {// 參數(shù)url: 'https://api.prize.qq.com/v1/newsapp/answer/share/oneQ?qID=506336' }};

當(dāng)客戶端正常完成接口的請(qǐng)求后,則將接口結(jié)果、cookie 和設(shè)備信息等返回到 PC 端:

// 請(qǐng)求的方法const post = url => { if (window.TencentNews && window.TencentNews.post) {window.TencentNews.post(url, {}, window[id], { loginType: 'qqorweixin' }, {}); } else if (window.TencentNews && window.TencentNews.postData) {window.TencentNews.postData(url, ’{'a':'b'}’, id, 'requestErrorCallback'); }};// 移動(dòng)端向服務(wù)端發(fā)起的數(shù)據(jù)ws.send({ type: 'postCb', // 執(zhí)行的結(jié)果 msg: {method: 'post',result,cookie: document.cookie,appInfo }});

這樣就能在前端展示出結(jié)果了,而且是真實(shí)的數(shù)據(jù)請(qǐng)求。

4.2 歷史記錄的存儲(chǔ)

歷史記錄這塊,我們周邊的同學(xué)在試用的過程中,還是非常迫切需要的需求。要不然每次要測試之前的接口地址時(shí),都需要重新輸入或者粘貼,非常不方便。

我們把用戶請(qǐng)求的 URL、返回的結(jié)果、cookie、設(shè)備信息等比較完整的信息存儲(chǔ)到 boss 中,而本地只存儲(chǔ)歷史的 URL,當(dāng)用戶需要再次測試之前的接口時(shí),點(diǎn)擊一下即可。若需要查看之前調(diào)試的接口,可以去鷹眼上進(jìn)行查看。

JS如何實(shí)現(xiàn)基于websocket的多端橋接平臺(tái)

本地采用的是localStorage的方式進(jìn)行存儲(chǔ)。還有更重要的是,我們也使用mobx的響應(yīng)式工具,能夠在用戶完成這次請(qǐng)求后,馬上在側(cè)邊的歷史記錄里看到結(jié)果。

5. 新聞客戶端內(nèi) jsapi 的調(diào)試

除了可以調(diào)試接口外,還可以進(jìn)行一些新聞客戶端內(nèi)的 jsapi 調(diào)試。我們新聞客戶端的 jsapi 有兩種調(diào)用的方式:

// 直接調(diào)用window.TencentNews.login('qqorweixin', isLogined => console.log(isLogined));// invoke方式調(diào)用window.TencentNews.invoke('login', 'qqorweixin', isLogined => console.log(isLogined));

這里我選擇了使用invoke的方式來調(diào)用 jsapi。

PC 端發(fā)起 jsapi 的調(diào)用:

ws.send({ type: 'call', msg: {method: method,params: slice.call(arguments) }});

移動(dòng)端在收到服務(wù)端發(fā)過來的請(qǐng)求后,進(jìn)行 jsapi 的調(diào)用,并將執(zhí)行的結(jié)果返回到 PC 端即可:

JS如何實(shí)現(xiàn)基于websocket的多端橋接平臺(tái)

const handleNewsApi = async (msg: any): Promise<any> => { await tencentReady(); const { method, params } = msg; return new Promise(resolve => {window.TencentNews.invoke(method, ...params, (result: any) => { resolve({ method, result });}); });};6. 總結(jié)

到這里,我的“基于 websocket 的多端橋接平臺(tái)”基本上已經(jīng)構(gòu)建完畢了。不過還是有 2 個(gè)問題要簡要的說明下。

6.1 為什么要手動(dòng)輸入 serverId

最開始想著用戶創(chuàng)建房間時(shí),由系統(tǒng)隨機(jī)產(chǎn)生一個(gè) uuid,但后來想,如果用戶刷新頁面了,這個(gè) uuid 就會(huì)發(fā)生變化,導(dǎo)致無法連接到之前的 uuid,所以這里就換成了手動(dòng)輸入。

6.2 如何保證一個(gè)客戶端的 socket 請(qǐng)求都進(jìn)入到同一個(gè)進(jìn)程中

當(dāng)我們后臺(tái)采用多個(gè)進(jìn)程時(shí),若用戶的請(qǐng)求我們不做干預(yù),會(huì)造成請(qǐng)求的隨機(jī)訪問,產(chǎn)生 400 的請(qǐng)求,畢竟最開始連接在 A 進(jìn)程中,現(xiàn)在發(fā)起的請(qǐng)求到 B 進(jìn)程中,B 進(jìn)程不知道怎么處理了。

這里有多種方式可以進(jìn)行處理:

方法 介紹 優(yōu)點(diǎn) 缺點(diǎn) 一致性 hash 算法 所有的主機(jī)和連接都分配到 0 ~ 2^32-1 的虛擬圓中 1. 適用在大規(guī)模的應(yīng)用; 2. 某個(gè)主機(jī)或者進(jìn)程掛掉后,影響小 實(shí)現(xiàn)比較復(fù)雜 nginx 分配 自帶的 ip_hash 可實(shí)現(xiàn)負(fù)載均衡; 同一 ip 會(huì)被分配給固定的后端服務(wù)器 配置方便 可能會(huì)集中到某個(gè)進(jìn)程中

我這里的平臺(tái)是內(nèi)部的調(diào)試平臺(tái),用戶量不大,殺雞焉用牛刀,而且我們只有一臺(tái)機(jī)器,因此我們考慮的是同一個(gè) IP 進(jìn)入到同一個(gè)進(jìn)程中。這里我借用里 nginx 中的 ip_hash 思想:當(dāng)請(qǐng)求來到主進(jìn)程后,我這里對(duì) IP 進(jìn)行加權(quán)計(jì)算后,然后按照進(jìn)程的個(gè)數(shù)進(jìn)行取模。

顯然這種方式也有可能存在一個(gè)進(jìn)程中 socket 連接過多的問題,不過在用戶量不多的時(shí)候完全可以接受(針對(duì)這個(gè)問題我也考慮了別的方法,例如瀑布流的方式,每次給子進(jìn)程分配連接的時(shí)候,都首先獲取到連接數(shù)最少的那個(gè)進(jìn)程,然后連接分配給這個(gè)進(jìn)程,不過還要維護(hù)一個(gè)表,每次都要計(jì)算)。

6.3 多進(jìn)程之間的通信

同一個(gè)房間里,當(dāng) PC 端的 socket 連接和多個(gè)移動(dòng)端的連接不在同一個(gè)進(jìn)程中時(shí),就會(huì)存在跨進(jìn)程的問題。一個(gè)極端的例子,每個(gè) socket 連接都在不同的進(jìn)程中,那么就要考慮如何通知其他的進(jìn)程,需要給客戶端發(fā)送請(qǐng)求了。

比較簡單的方式利用我們的機(jī)制,每個(gè) PC 端的用戶就是房主,可以創(chuàng)建一個(gè)房間,移動(dòng)設(shè)備就是房間中的成員,每個(gè)房間都是獨(dú)立的,互不干擾。這樣我們把房間里所有的 socket 連接,通過房間的標(biāo)識(shí),都放到同一個(gè)進(jìn)程中,這樣就沒有跨進(jìn)程的問題了。但這種方式存在的一個(gè)問題是:一個(gè)房間里的連接過多時(shí),都需要這同一個(gè)進(jìn)程來承擔(dān),而別的進(jìn)程卻閑著的。

還有可以使用 redis:利用 redis 的發(fā)布/訂閱者模式,將當(dāng)前進(jìn)程中的房間標(biāo)識(shí)和信息廣播到其他的進(jìn)程中,其他進(jìn)程中有相同房間標(biāo)識(shí)的 socket 連接,進(jìn)行相應(yīng)的操作。

以上就是JS如何實(shí)現(xiàn)基于websocket的多端橋接平臺(tái)的詳細(xì)內(nèi)容,更多關(guān)于JS基于websocket的多端橋接平臺(tái)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 一区二区三区四区日韩 | 美女一区| 亚洲精品午夜视频 | 性xxxxxxxxx18欧美 | 日韩大片播放器 | 91天堂| 色先锋影音 | 99热精品国产 | 日韩精品久久理论片 | 天堂一区二区三区 | 国产精品视频久久久 | 日韩精品视频在线 | 在线观看v片 | 中文字幕一区二区三区日韩精品 | 欧美日韩一区二区在线 | 香蕉久久久久久 | 国产 欧美 日韩 一区 | www日批 | 爱草在线 | 中文字幕一区二区三区不卡 | 午夜亚洲一区 | 密色视频 | 日日爽夜夜操 | 国产福利片在线 | 成人精品国产免费网站 | 国产一区二区三区久久久久久久久 | 国产在线视频a | 黄色小视频在线观看 | 中文字幕大全 | 国产精品久久久久久久竹霞 | 啵啵影院午夜男人免费视频 | 欧洲一区二区三区 | 亚洲视频在线一区 | 午夜窝窝 | 91综合网 | 亚洲视频一区在线 | 精品久久久久久 | 国产91视频在线观看 | 日韩网站免费观看 | 亚洲欧美精品 | 欧美黑人一级爽快片淫片高清 | 91亚洲视频| www日本在线 | 日本三级在线观看网站 | 色欧美日韩 | 一区二区三区精品 | 免费看91| 欧美一区二区三区久久精品 | 国产欧美在线视频 | 精品久久久久久国产 | 一区二区三区免费视频网站 | 日韩在线免费观看视频 | 色综合88| 欧美精品一区自拍a毛片在线视频 | 一级毛片在线免费看 | 天天操一操| 国产精品一区二区不卡 | 宅男lu666噜噜噜在线观看 | 黄色在线观看网址 | 久久久久久久久一区二区三区 | 中文字幕av第一页 | 久久久www成人免费精品 | av中文字幕在线播放 | 99久久视频| 久久精品色欧美aⅴ一区二区 | 欧美日韩视频 | 亚洲在线一区二区 | 精品久久久久久久久久久久 | 一区二区三区在线播放 | 久久丁香 | 曰批视频在线观看 | 亚洲在线播放 | 久久久久国产一区二区三区四区 | 国产精品一区二区三区免费 | 日韩视频中文字幕 | 精品国产一区二区三区久久久 | 亚洲视频三区 | 亚洲一区二区三区四区五区中文 | 精品成人一区 | 国产成人欧美一区二区三区的 | 国产精品久久久久久久久久小说 | 91精品国产综合久久福利 | 亚洲二区在线视频 | 一区二区色 | 国产一区二区三区四 | 亚洲一区二区精品在线观看 | 亚洲欧美在线免费观看 | 国产一区 | 久久久国产视频 | 91视频88av | 国产精品一区二区三区四区 | 欧美激情视频一区二区三区在线播放 | 日本久久精品一区二区 | 日韩中文字幕av | 婷婷久久综合 | 亚洲欧美在线观看 | 亚洲乱码在线 | 成人a网| 91在线视频一区 | 欧美黄色激情 | 亚洲风情在线观看 | 欧美精品久久久 | 亚洲一二三区电影 | 亚洲成人精品视频 | 国产日韩av在线 | 中文字幕一区在线观看视频 | 成人在线欧美 | 国产美女自拍视频 | 亚洲一区二区三区免费观看 | 操操操av| 欧美一区二区三 | 免费观看一级毛片 | 中文天堂av | 欧美日韩综合精品 | 亚洲狠狠| 成人av一区二区三区 | 亚洲狠狠爱一区二区三区 | 欧美日韩一区在线 | 国产美女网站 | 国产精品99久久久久久www | www一区二区| 欧美一区中文字幕 | 国模精品视频一区二区 | 国产综合精品 | 欧美激情一区二区三区蜜桃视频 | 成人xxx | 操网| 成人在线免费观看 | 久久国产精品99精国产 | 久久天堂 | 久久综合一区二区 | 亚洲日本欧美日韩高观看 | 久久久噜噜噜www成人网 | 亚洲综合欧美 | 欧美一级片免费播放 | 久久久在线 | 人人澡人人射 | 亚洲国产日韩一区 | 午夜精品一区二区三区在线视频 | 男女羞羞视频网站 | ririsao久久精品一区 | 亚洲人成在线播放 | 中文字幕一二三区 | 精品国产乱码久久久久久丨区2区 | 国产成人精品一区二区在线 | 男女羞羞羞视频午夜视频 | 国产欧美日本 | 精品一区二区三区久久久 | 欧美顶级毛片在线播放 | 精品国产一区一区二区三亚瑟 | 久久99精品久久久久久园产越南 | 欧美成视频 | 丁香久久 | av一级久久 | 成人国产在线观看 | 国产男女视频在线观看 | 日韩精品在线播放 | 三级av网站 | av在线毛片 | 久久一二区 | zzzzyyyy精品国产 | 81精品国产乱码久久久久久 | 久久久久久久中文 | 亚洲精品影院 | 色婷婷亚洲一区二区三区 | 欧美亚洲日本 | 91精品国产日韩91久久久久久 | 自拍偷拍第一页 | 伊人网在线视频观看 | 亚洲日本精品视频 | 男人天堂亚洲天堂 | 91hd精品少妇| 午夜久久久久 | 日日操av| 二区三区| 亚洲xxxx3d| av片免费 | 岛国av免费 | 天天久久 | 超碰国产一区 | 美女操网站 | 欧美大片一区二区 | 日韩在线小视频 | 99国产在线视频 | 在线看亚洲 | 亚洲一区二区三区四区 | 一区二区国产精品 | 狠狠入ady亚洲精品经典电影 | 亚洲久久在线 | 亚洲精品乱码8久久久久久日本 | 久久久精品| 国产亚洲精品久久久久久久 | 国产精品久久av | 欧美日韩午夜 | 久久韩国 | 国产在线观看一区 | 天天干天天操 | 国产在线精品一区 | 国产日韩欧美激情 | 国产精品视频入口 | 亚洲欧美日韩在线一区二区三区 | 国产精品久久久久久久久免费 | 国产成人精品一区二区三区四区 | 中文在线一区二区 | 噜噜噜噜噜在线视频 | 色综合天天综合网国产成人网 | 亚洲一本 | 日韩不卡一二三 | 99色影院 | 国产成人片 | 国产精品国产成人国产三级 | 中文字幕日韩在线 | 午夜黄色影院 | 欧美一区二区三区精品 | 国产欧美精品区一区二区三区 | 在线观看的av | 欧美自拍视频一区 | 精品久久一区二区三区 | 亚洲日韩中文字幕一区 | 亚洲 成人 av| 成人二区 | 成年人免费看 | 国产一区视频在线 | 天堂中文网官网 | 久久久www成人免费精品 | 国产福利精品一区 | 免费黄色在线 | 综合久久久久 | 午夜视频网| 国产精品乱码一区二区三区 | 日本黄色毛片 | 日日操av | 在线观看毛片视频 | 日韩在线视频免费 | 日韩视频在线免费观看 | 在线91 | 日韩精品一区二区三区免费观看视频 | 伊人青青草 | 日韩中文字幕无码一区二区三区 | 久草 在线 | 日韩欧美a级v片免费播放 | 成人伊人 | 久久久久无码国产精品一区 | 午夜窝窝 | 99亚洲| 成人av观看| 黄色地址| 99久久久精品 | 中文字幕亚洲视频 | 国产精品久久婷婷六月丁香 | 婷婷激情五月 | 国产精品第一国产精品 | 91精品国产综合久久久久久丝袜 | 蜜臀在线视频 | 国产a级大片 | 亚洲成人精品 | 国产精品第一国产精品 | 国产一区二区三区高清 | 亚洲综合网站 | 伊人网站在线 | 精品国产欧美一区二区 | 成人二区| 2019中文字幕视频 | 亚洲欧洲精品视频 | 在线不卡a资源高清 | 国产一区二区在线免费观看 | 国产毛片a级 | 你懂的在线视频播放 | 99热这里有精品 | 欧美精品欧美精品系列 | 激情小说综合网 | 欧美日韩精品久久 | 成人二区 | 欧美日韩一区在线观看 | 综合国产 | 国产2区| 欧美日韩在线不卡 | 成人影院www在线观看 | 国产精品视频免费看 | aaa在线观看 | 亚洲欧美激情精品一区二区 | 国产成人综合在线 | 亚洲综合色自拍一区 | 日本久草| av久久 | 久热精品国产 | 欧美精品二区 | 久久精品99| 成人精品视频在线 | 久久久久网站 | 日本午夜在线 | 午夜在线观看视频 | 一区二区三区国产视频 | 99视频在线 | 久免费视频 | 亚洲精品综合 | 国产一级片一区二区三区 | 最新国产精品 | 午夜窝窝| 欧美一区二区免费在线 | 中文在线视频 | 国产精品一卡二卡三卡 | 欧美成人午夜视频 | 国产精品日日做人人爱 | 国产精品视频 | 曰本人一级毛片免费完整视频 | 日韩电影一区 | 中文字幕一区二区三区在线视频 | 天堂亚洲| 国产综合精品一区二区三区 | 国产一页| 天天爽夜夜爽夜夜爽精品视频 | 亚洲欧洲视频 | 午夜激情免费在线观看 | 第一色视频 | 免费看黄视频网站 | a视频在线观看 | 国产精品不卡 | 久在线视频 | 欧美另类一区二区 | 九九香蕉视频 | 免费看片www| 精品欧美一区二区三区久久久小说 | 狠久久 | 国产成人精品一区二 | 国产999免费视频 | 成人高清在线观看 | 一区二区三区四区在线播放 | 性色av一区二区三区 | 91精品国产高清久久久久久久久 | 欧美成人三区 | 91麻豆精品国产91久久久久久 | 一区二区三区有限公司 | 蜜臀在线视频 | 亚洲精品久久久久久一区二区 | www,99热| 亚洲成人中文字幕 | 99热首页| 久草免费福利 | 国产一级影片 | 国产精品久久久久久 | 麻豆国产一区二区三区四区 | 91污在线| 中文字幕免费在线 | 国产一区二区久久 | 亚洲一区二区免费看 | 午夜精品久久久久久久久久久久久 | 91福利电影在线观看 | 亚洲精品乱码久久久久久按摩观 | 91极品视频在线观看 | 欧美激情一区二区三区蜜桃视频 | 在线观看成人小视频 | 亚洲精品在线免费播放 | 久久久久久国产精品 | 国产精产国品一二三产区视频 | 精品成人av| www.中文字幕在线 | 国产日韩欧美一区二区 | 欧美视频一区 | 黄色一级在线观看 | 在线视频 91 | 欧美一区久久 | 麻豆一区一区三区四区 | 国产在线第一页 | 国产日韩欧美一区 | 狠狠爱天天干 | 国产精品爱久久久久久久 | www国产一区 | 欧美一区二区黄色片 | 日韩精品专区 | 午夜a级理论片915影院 | 免费黄色大片 | 欧美成人精品一区二区男人看 | 黄色大片网 | 亚洲视频1区 | 亚洲在线视频 | 精产国产伦理一二三区 | 日韩在线精品视频 | 国产精品成人一区二区三区夜夜夜 | 色www精品视频在线观看 | 天堂√在线观看一区二区 | 久久国产高清 | 色视频免费在线观看 | 欧美日韩精品久久久久 | 奇米二区| 在线观看国产wwwa级羞羞视频 | 99久久精品一区二区 | 亚洲视频一区在线 | 精品国偷自产在线 | 妹子干综合| 天天看天天爽 | 日韩欧美精品一区 | 这里只有精品在线 | 亚洲精品9999 | 亚洲人成人一区二区在线观看 | 日日日日日 | 超碰伊人网| 亚洲毛片在线 | 久久成人毛片 | 国产一区二区影院 | 国产一级黄色av | 天天摸天天摸 | 欧美.com | 久久久久久网站 | 精品在线一区二区三区 | 二区三区在线观看 | 欧美一级免费看 | 欧美a在线 | 国产精品成人在线 | 欧美日韩精品在线 | 久久精品国产v日韩v亚洲 | 91精品久久久久久久久久 | 成人1区2区| 丁香婷婷综合激情五月色 | 拍拍无遮挡人做人爱视频免费观看 | 亚洲一区二区在线免费观看 | 日韩精品视频在线 | 99色资源| 狠狠操电影 | 偷派自拍 | 黄色网在线 | 国产精品毛片无码 | 亚洲h视频在线观看 | 天天操综合网 | zzzzyyyy精品国产 | 亚洲国产精品成人 | 国产欧美精品一区二区三区 | 精品国产欧美一区二区三区成人 | 久久久久久久成人 | 在线观看第一页 | 少妇一区二区三区 | 少妇精品久久久久久久久久 | 在线免费观看毛片 | 成人欧美一区二区三区在线观看 | 美女在线一区 | 亚洲va中文字幕 | 一区二区在线视频 | 亚洲嫩草| 色悠久久久 | 久久97视频| 夜夜夜操操操 | 国产精品一区二区在线 | 国产丝袜视频 | 视频一区二区三区免费观看 | 欧美日韩在线视频一区 | 婷婷久久综合 | 国产v日产∨综合v精品视频 | 国产毛片毛片 | 国产精品免费久久 | 天天干人人 | 日韩精品一区二区三区第95 | 91精品久久久久久久久 | 欧美一区二区黄色片 | 日本黄色一级 | 浴室洗澡偷拍一区二区 | 亚洲精品久久久久久久久久久 | 亚洲精品视频在线观看免费视频 | 男女啪啪免费网站 | 一区视频在线 | 午夜剧院官方 | 色免费在线观看 | 国产成人 综合 亚洲 | 精品福利在线视频 | 国产精品久久久久国产a级 日韩在线二区 | 午夜寂寞福利视频 | 国产在线小视频 | 欧美日韩在线看 | 国产成人高清精品免费5388 | 成人欧美一区二区三区白人 | 懂色av一区二区三区在线播放 | 久久久.com| 中文字幕免费在线 | 日韩欧美在线观看视频网站 | 久草网站| 91久久精品一区二区二区 | 国产高清在线精品一区二区三区 | 亚洲免费观看 | 久久精品影片 | 国产精品成av人在线视午夜片 | 欧美成人一区二区三区片免费 | 精品久久久久久久久久久久久久 | 国产性网| av7777| 亚洲成人精品 | 国产美女永久免费无遮挡 | 成人一级片在线观看 | 欧美在线播放一区 | 欧美午夜视频在线观看 | 狠狠干美女 | 国产九九精品 | 国产欧美精品区一区二区三区 | 日韩一区在线播放 | 91精品久久久久久久久久入口 | 久色| 男人的天堂在线视频 | 亚洲欧美日韩另类精品一区二区三区 | 影音先锋成人资源网 | 欧美日韩国产一区二区三区 | 精品视频一区二区三区 | 欧美日韩三级在线 | 中文字幕一区二区三区不卡 | 国产精品高清在线 | 国产精品中文字幕在线 | 国产亚洲欧美在线 | 亚洲精品99 | 国产美女一区二区 | 国产成人精品一区 | 真人一级毛片 | 久草在线资源福利站 | 国产精品成人观看视频国产奇米 | 97国产免费 | 日本黄色电影网站 | 午夜精| 国产日韩一区 | 国产精品爱久久久久久久 | av黄在线观看 | 亚洲国产日韩在线 | 国产一区二区视频在线观看 | 羞羞在线观看视频免费观看hd | 亚洲热在线观看 | 一区 | 日韩欧美综合 | 亚洲处破女 | 国产中文在线 | 亚洲欧美日韩电影 | 欧美a√| av手机在线播放 | 精品久久久久久久久久久久 | 久久久精品国产 | 国产精品美女久久久 | 美女天堂| 99精品欧美一区二区蜜桃免费 | 在线看免费黄色片 | 欧美一级片免费观看 | 成年人免费在线视频 | 天天噜天天干 | 日韩1区3区4区第一页 | 午夜欧美一区二区三区在线播放 | 成人一区在线观看 | 日韩精品一区二区在线观看 | 亚洲h视频| 国产成人在线视频 | 欧美色综合天天久久综合精品 | 欧美精品二区中文乱码字幕高清 | 黄在线免费观看 | 999精品视频 | 国产精自产拍久久久久久 | 97超碰在线免费 | 亚洲国产福利一区 | 亚洲人人艹 | 免费视频久久久久 | 特级毛片在线大全免费播放 | www.久久久.com | 日本亚洲精品一区二区三区 | 久久久婷 | 免费黄色小视频 | 999精品免费| 亚洲一区中文字幕在线观看 | 亚洲成av人乱码色午夜 | eeuss国产一区二区三区四区 | 欧美精品一区二区三区手机在线 | 中文字幕7777 | 日韩久久久一区二区 | 日本免费视频在线观看 | 欧美日一区 | 国产精品99久久久久久久vr | 精品欧美黑人一区二区三区 | 国产中文字幕在线 | xxxx欧美 | 亚洲欧美一区二区三区在线 | 天天操天天曰 | 不卡的免费av | 成人欧美一区二区三区在线播放 | 中文字幕一区二区三区乱码在线 | 国产精品午夜在线观看 | 久久在线播放 | 亚洲国产二区三区 | www.国产91 | 国产精品久久国产精品 | 色5月婷婷丁香六月 | 精品一区二区三区免费 | 久久精品欧美一区二区三区不卡 | 欧美一区二区三区精品 | 中文字幕一区二区三区精彩视频 | 天天干天天曰天天操 | 青青草超碰在线 | 日韩高清在线 | 国产一区二区视频在线播放 | 日韩中文一区二区三区 | 免费在线成人网 | 精品国内 | 天天操网 | 国产精品美女视频一区二区三区 | av基地网 | 国产在线观看av | 久久蜜桃精品一区二区三区综合网 | 日韩中文字幕电影 | 国产真实精品久久二三区 | 国产精品免费av | 91aiai| 欧美2区| 在线国产91 | 国产 亚洲 网红 主播 | 成人影| 一区二区三区国产视频 | 欧美一区二区免费在线 | 精品一区二区久久久久久久网站 | 春色av| 伊人av成人 | 国产精品欧美久久久久一区二区 | 久久国产精品免费一区二区三区 | 亚洲精品一区二区三区 | 久久精品国产77777蜜臀 | 国产色视频在线观看免费 | 亚洲成av |