精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot整合WebSocket詳解

開發(fā) 前端
如果WebSocket服務(wù)器運(yùn)行在web服務(wù)器(例如nginx)后面,你可能需要配置它來(lái)將WebSocket升級(jí)請(qǐng)求傳遞給WebSocket服務(wù)器。同樣,如果應(yīng)用程序運(yùn)行在云環(huán)境中,請(qǐng)查看云提供商提供的有關(guān)WebSocket支持的說(shuō)明。

環(huán)境:Springboot3.0.5

WebSocket介紹

WebSocket協(xié)議RFC 6455提供了一種標(biāo)準(zhǔn)化的方式,通過(guò)一個(gè)TCP連接在客戶端和服務(wù)器之間建立全雙工、雙向的通信通道。它是一個(gè)不同于HTTP的TCP協(xié)議,但設(shè)計(jì)為在HTTP之上工作,使用80和443端口,并允許重用現(xiàn)有的防火墻規(guī)則。

WebSocket交互開始于一個(gè)HTTP請(qǐng)求,使用HTTP Upgrade header進(jìn)行升級(jí),在本例中是切換到WebSocket協(xié)議。下面的例子展示了這種交互:

GET /spring-websocket-portfolio/portfolio HTTP/1.1
Host: localhost:8080
Upgrade: websocket             // ①
Connection: Upgrade           // ②
Sec-WebSocket-Key: Uc9l9TMkWGbHFD2qnFHltg==
Sec-WebSocket-Protocol: v10.stomp, v11.stomp
Sec-WebSocket-Version: 13
Origin: http://localhost:8080

①:Upgrade header頭部信息

②:使用 Upgrade 連接

支持WebSocket的服務(wù)器會(huì)返回類似下面的輸出,而不是通常的200狀態(tài)碼:

HTTP/1.1 101 Switching Protocols 
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: 1qVdfYHU9hPOl4JYYNXF623Gzn0=
Sec-WebSocket-Protocol: v10.stomp

握手成功后,HTTP upgrade請(qǐng)求的TCP套接字保持打開,客戶端和服務(wù)器可以繼續(xù)發(fā)送和接收消息。

如果WebSocket服務(wù)器運(yùn)行在web服務(wù)器(例如nginx)后面,你可能需要配置它來(lái)將WebSocket升級(jí)請(qǐng)求傳遞給WebSocket服務(wù)器。同樣,如果應(yīng)用程序運(yùn)行在云環(huán)境中,請(qǐng)查看云提供商提供的有關(guān)WebSocket支持的說(shuō)明。

HTTP與WebSocket

盡管WebSocket在設(shè)計(jì)上是與HTTP兼容的,而且從HTTP請(qǐng)求開始,但重要的是要明白,這兩種協(xié)議導(dǎo)致了非常不同的架構(gòu)和應(yīng)用程序編程模型。

在HTTP和REST中,應(yīng)用程序被建模為多個(gè)url。為了與應(yīng)用程序交互,客戶端以請(qǐng)求-響應(yīng)的方式訪問(wèn)這些url。服務(wù)器根據(jù)HTTP URL、方法和首部將請(qǐng)求路由到適當(dāng)?shù)奶幚沓绦颉?/p>

相比之下,在websocket中,初始連接通常只有一個(gè)URL。隨后,所有應(yīng)用程序消息都在同一個(gè)TCP連接上流動(dòng)。這是一種完全不同的異步、事件驅(qū)動(dòng)的消息傳遞架構(gòu)。

WebSocket也是一種底層傳輸協(xié)議,與HTTP不同,它對(duì)消息內(nèi)容沒(méi)有任何語(yǔ)義規(guī)定。這意味著除非客戶端和服務(wù)器在消息語(yǔ)義上達(dá)成一致,否則無(wú)法路由或處理消息。

WebSocket客戶端和服務(wù)器可以通過(guò)HTTP握手請(qǐng)求的Sec-WebSocket-Protocol頭部來(lái)協(xié)商使用更高級(jí)別的消息傳遞協(xié)議(例如STOMP)。在這種情況下,他們需要制定自己的慣例。

什么時(shí)候該使用WebSocket

WebSockets可以使網(wǎng)頁(yè)具有動(dòng)態(tài)性和交互性。然而,在許多情況下,Ajax和HTTP流或長(zhǎng)輪詢的組合可以提供簡(jiǎn)單而有效的解決方案。

例如,新聞、郵件和社交源需要?jiǎng)討B(tài)更新,但每隔幾分鐘更新一次完全沒(méi)問(wèn)題。另一方面,協(xié)作、游戲和金融應(yīng)用需要更接近實(shí)時(shí)。

延遲本身并不是決定性因素。如果消息量相對(duì)較少(例如監(jiān)視網(wǎng)絡(luò)故障),HTTP流或輪詢可以提供有效的解決方案。低延遲、高頻率和高容量的組合才是WebSocket的最佳選擇。

還要記住,在互聯(lián)網(wǎng)上,你無(wú)法控制的限制性代理可能會(huì)阻止WebSocket交互,要么是因?yàn)樗鼈儧](méi)有配置為傳遞Upgrade header,要么是因?yàn)樗鼈冴P(guān)閉了看起來(lái)空閑的長(zhǎng)連接。這意味著對(duì)防火墻內(nèi)的內(nèi)部應(yīng)用程序使用WebSocket比面向公眾的應(yīng)用程序更直接。

WebSocket核心API

Spring框架提供了一個(gè)WebSocket API,可以用它來(lái)編寫處理WebSocket消息的客戶端和服務(wù)器端應(yīng)用程序。

  • WebSocketHandler

創(chuàng)建WebSocket服務(wù)器很簡(jiǎn)單,只需實(shí)現(xiàn)WebSocketHandler,或者擴(kuò)展TextWebSocketHandler或BinaryWebSocketHandler。下面的例子使用了TextWebSocketHandler:

public class MessageHandler extends TextWebSocketHandler {


  @Override
  public void handleTextMessage(WebSocketSession session, TextMessage message) {
    System.out.printf("SessionId: %s, 接收到消息: %s%n", session.getId(), message.getPayload()) ;
    try {
      session.sendMessage(new TextMessage("服務(wù)端接收到消息 - " + message.getPayload())) ;
    } catch (IOException e) {
      e.printStackTrace();
    }
  }


  @Override
  public void afterConnectionEstablished(WebSocketSession session) throws Exception {
    System.out.printf("連接成功, 會(huì)話Id: %s, Attribute: %s%n", session.getId(), session.getAttributes()) ;
  }


  @Override
  public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
    System.out.printf("連接關(guān)閉, 會(huì)話Id: %s, 關(guān)閉狀態(tài): %s%n", session.getId(), status.getCode() + " - " + status.getReason()) ;
  }


}

WebSocket配置

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {


  @Override
  public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(messageHandler(), "/message")
  }
  @Bean
  public WebSocketHandler messageHandler() {
    return new MessageHandler();
  }
}
  • WebSocket Handshake

要定制初始的HTTP WebSocket握手請(qǐng)求,最簡(jiǎn)單的方法是使用HandshakeInterceptor,它提供了握手前和握手后的方法。你可以使用這樣的攔截器來(lái)阻止握手,或者讓 WebSocketSession可以訪問(wèn)任何屬性。下面的例子使用內(nèi)置的攔截器將HTTP會(huì)話屬性傳遞給WebSocket會(huì)話:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {


  @Override
  public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry
      .addHandler(messageHandler(), "/message")
      .setHandshakeHandler(handshakeHandler())
      // 添加捂手?jǐn)r截器
      .addInterceptors(new HandshakeInterceptor() {
        // 如果該方法返回false,則不允許建立連接
        @Override
        public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
            WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
          // todo
          attributes.put("uid", uid) ;
          return true ;
        }
        @Override
        public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
            Exception exception) {
          // todo
        }
      }) ;
  }
}
  • 部署

Spring WebSocket API很容易集成到Spring MVC應(yīng)用程序中,DispatcherServlet可以同時(shí)處理HTTP WebSocket握手和其他HTTP請(qǐng)求。調(diào)用
WebSocketHttpRequestHandler也很容易集成到其他HTTP處理場(chǎng)景中。這樣既方便又容易理解。但是,對(duì)于JSR-356運(yùn)行時(shí),需要特別注意。

Java WebSocket API (JSR-356)提供兩種部署機(jī)制。第一種方法涉及啟動(dòng)時(shí)的Servlet容器類路徑掃描(Servlet 3特性)@ServerEndpoint。另一個(gè)是Servlet容器初始化時(shí)使用的注冊(cè) API(ServletContainerInitializer)。這兩種機(jī)制都不可能對(duì)所有HTTP處理使用單個(gè)“前端控制器”?—?包括WebSocket握手和所有其他HTTP請(qǐng)求?—?如Spring MVC的DispatcherServlet。

這是JSR-356的一個(gè)重要限制,Spring的WebSocket支持通過(guò)特定于服務(wù)器的RequestUpgradeStrategy實(shí)現(xiàn)來(lái)解決這個(gè)問(wèn)題,即使運(yùn)行在JSR-356運(yùn)行時(shí)也是如此。Tomcat、Jetty、GlassFish、WebLogic、WebSphere和Undertow(以及WildFly)目前都存在這樣的策略。

  • 服務(wù)配置

每個(gè)底層WebSocket引擎都公開了控制運(yùn)行時(shí)特征的配置屬性,例如消息緩沖區(qū)大小、空閑超時(shí)等。

對(duì)于Tomcat、WildFly和GlassFish,可以在WebSocket Java配置中添加
ServletServerContainerFactoryBean,如下面的例子所示:

@Bean
public ServletServerContainerFactoryBean servletServerContainerFactoryBean() {
  ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean() ;
  container.setMaxTextMessageBufferSize(8192) ;
  container.setMaxBinaryMessageBufferSize(8192) ;
  return container ;
}


  • 允許的來(lái)源

從Spring Framework 4.1.5開始,WebSocket和SockJS的默認(rèn)行為是只接受同源請(qǐng)求。也可以允許所有或指定的來(lái)源列表。這個(gè)檢查主要是為瀏覽器客戶端設(shè)計(jì)的。沒(méi)有什么能阻止其他類型的客戶端修改Origin首部值。

三種可能的行為是:

  1. 僅允許同源請(qǐng)求(默認(rèn)):在這種模式下,當(dāng)啟用SockJS時(shí),Iframe HTTP響應(yīng)頭X-Frame-Options設(shè)置為SAMEORIGIN,并且禁用JSONP傳輸,因?yàn)樗辉试S檢查請(qǐng)求的來(lái)源。因此,啟用此模式時(shí),不支持IE6和IE7。
  2. 允許指定的來(lái)源列表:每個(gè)允許的來(lái)源必須以http://或https://.開頭在此模式下,當(dāng)啟用SockJS時(shí),禁用IFrame傳輸。因此,啟用此模式時(shí),將不支持IE6到IE9。
  3. 允許所有來(lái)源:要啟用此模式,你應(yīng)該提供*作為允許的來(lái)源值。在該模式下,所有傳輸通道都可用。
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {


  @Override
  public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry
      .addHandler(messageHandler(), "/message")
      .setAllowedOriginPatterns("*") ;
  }
}

測(cè)試

通過(guò)上面的介紹和配置,WebSocket環(huán)境就算是簡(jiǎn)單的配置完成了,接下來(lái)通過(guò)Postman進(jìn)行測(cè)試。

圖片圖片

連接成功

發(fā)送消息及接收消息發(fā)送消息及接收消息


服務(wù)端接收到消息服務(wù)端接收到消息


責(zé)任編輯:武曉燕 來(lái)源: Spring全家桶實(shí)戰(zhàn)案例源碼
相關(guān)推薦

2024-09-11 08:35:54

2024-03-19 08:45:45

WebSocketSpring應(yīng)用開發(fā)

2023-01-13 00:02:41

2023-01-05 09:17:58

2021-03-26 08:16:32

SpringbootWebsocket前端

2017-05-09 10:07:34

SpringbootDubboZooKeeper

2023-07-03 15:55:05

語(yǔ)法jpa狀態(tài)

2023-09-04 08:00:53

提交事務(wù)消息

2023-11-10 08:17:01

分布式搜索引擎

2023-08-08 08:28:03

消息消費(fèi)端Spring

2023-08-10 11:39:54

RabbitMQSpring交換機(jī)

2021-03-25 08:29:33

SpringBootWebSocket即時(shí)消息

2023-08-14 08:01:12

websocket8g用戶

2021-04-07 08:43:09

SpringBootRocketMQ開發(fā)技術(shù)

2021-02-05 07:28:11

SpringbootNettyWebsocke

2020-01-10 15:42:13

SpringBootRedis數(shù)據(jù)庫(kù)

2021-07-16 07:57:35

SpringBootOpenFeign微服務(wù)

2020-04-23 15:08:41

SpringBootMyCatJava

2024-04-03 15:40:14

WebSocketWeb應(yīng)用Spring

2024-09-05 08:58:37

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

波多野结衣啪啪| 日本黄色一区二区| 亚洲成人精品久久久| 欧美国产综合视频| 538精品在线视频| 台湾佬成人网| 国产精品mv在线观看| 一级中文字幕一区二区| 国产99视频精品免视看7| 免费观看一区二区三区| 久久99精品久久| 残酷重口调教一区二区| 日韩成人av毛片| 青春草在线免费视频| 免费在线观看视频一区| 亚洲人成电影网站色| 国产成a人亚洲精v品在线观看| 伊人网视频在线| 一区二区三区视频免费观看| 午夜私人影院久久久久| av一区和二区| 丰满少妇被猛烈进入一区二区| 大型av综合网站| 一区二区三区四区在线免费观看 | av在线资源| 国产激情一区二区三区| 精品少妇v888av| 免费看涩涩视频| 日本中文字幕电影在线免费观看 | 精品亚洲自拍| 亚洲地区一二三色| 国产麻豆乱码精品一区二区三区 | 久久精品免费一区二区三区| 欧美午夜精品久久久| 日韩av电影免费播放| 波多野结衣激情视频| 清纯唯美日韩| 日韩高清有码在线| 免费在线观看的毛片| 国产在线观看网站| 青娱乐精品视频| 久久国内精品一国内精品| 国产乱码一区二区三区四区| 国产精品扒开做爽爽爽的视频| 国产精品系列在线观看| 久久久影视精品| 性久久久久久久久久| 台湾佬中文娱乐久久久| 精品久久久久久中文字幕一区奶水 | 欧美片一区二区| 粉嫩av一区二区| 日韩欧美你懂的| 鲁一鲁一鲁一鲁一澡| 女人天堂在线| 麻豆精品视频在线| 九九久久久久99精品| 日韩免费av一区| 国产三级精品三级在线观看国产| 91麻豆精品国产91久久久更新时间| 色爽爽爽爽爽爽爽爽| 日日夜夜精品免费| 日韩1区2区3区| 日本精品久久久| 成年人视频软件| 欧美最新另类人妖| 欧美成人官网二区| 欧美精品成人网| 欧美xxxxxx| 日本丶国产丶欧美色综合| 成人黄色一区二区| 成人不卡视频| 精品久久久久久久久国产字幕 | 国产亚洲精品v| 色老头一区二区三区| 又色又爽又黄18网站| 一区二区亚洲视频| 欧美色偷偷大香| 久久国产精品网| 久久精品视频免费看| 亚洲精品免费播放| 精品成在人线av无码免费看| aⅴ在线视频男人的天堂| www.亚洲免费av| 91精品视频在线播放| 中文字幕精品无码一区二区| 欧美日韩亚洲一区二区三区在线| 欧美激情日韩图片| 亚洲人做受高潮| 国产一区二区精品福利地址| 亚洲国产精品成人va在线观看| 日韩少妇一区二区| 久久丁香四色| 欧美精品在线一区二区三区| 成人久久久久久久久| 91桃色在线| 在线视频你懂得一区| 九一国产精品视频| 欧美日韩经典丝袜| 欧美日韩国产一区中文午夜| 欧美大黑帍在线播放| www555久久| 亚洲精品日韩综合观看成人91| 亚洲国产成人不卡| 好男人免费精品视频| 国产精品久久久久久妇女6080| 欧日韩一区二区三区| 亚洲三级中文字幕| 成人精品国产一区二区4080| 91久久爱成人| 国产欧美日韩综合精品一区二区三区 | 国产一区 二区 三区一级| 国产精品成人av在线| 色屁屁影院www国产高清麻豆| 老汉av免费一区二区三区| 国语精品免费视频| 日本人妻丰满熟妇久久久久久| 国产成人精品亚洲777人妖 | 亚洲 欧美 自拍偷拍| 国产精品午夜免费| 视频一区国产精品| 国产一二三区在线视频| 一区二区在线免费| 国产熟人av一二三区| 国产香蕉精品| 久久久国产视频91| 91视频久久久| av不卡在线观看| 波多野结衣与黑人| mm视频在线视频| 婷婷六月综合网| 午夜大片在线观看| jizzjizzjizz欧美| 亚洲精品99999| 人妻丰满熟妇aⅴ无码| 女人抽搐喷水高潮国产精品| 亚洲精品影视在线观看| 91l九色lporny| 色喇叭免费久久综合| 精品国产欧美一区二区三区成人| 国产精品九九九九九九| 亚洲国产影院| 日本亚洲欧美成人| 天天操天天射天天| 亚洲国产视频网站| 精人妻一区二区三区| 婷婷综合电影| 中文字幕在线精品| 久草视频中文在线| 激情深爱一区二区| 国产一区二区三区黄| 免费理论片在线观看播放老| 污片在线观看一区二区| 少妇献身老头系列| 影音先锋久久久| 国产成人精品免高潮在线观看| 91麻豆成人精品国产免费网站| 国产高清精品在线| 国产一二三四区在线观看| 理论片午夜视频在线观看| 欧美日韩国产在线观看| 亚洲成a人无码| 狠狠色丁香久久综合频道| 成人羞羞视频免费| аⅴ资源新版在线天堂| 亚洲激情图片一区| 92国产精品久久久久首页| 三区精品视频观看| 欧洲中文在线| 精品国产成人在线影院 | 91蝌蚪国产九色| 伊人精品久久久久7777| 国产天堂在线播放视频| 精品欧美久久久| 国产无码精品视频| 久久国产麻豆精品| 99re视频在线观看| 丁香花在线电影| 亚洲精品狠狠操| 日批视频免费在线观看| 国产精品久久久久久久久果冻传媒 | 中文字幕第20页| 欧美午夜电影在线观看| 精品久久久久亚洲| 台湾成人免费视频| 久久影院资源网| 中文字幕av无码一区二区三区| 国产精品成人免费| 国产精品无码自拍| 欧美亚洲免费| 国产伦精品一区二区三区视频孕妇| 超碰97国产在线| 国产区高清在线| 黄色成人在线播放| 成熟人妻av无码专区| 国产一区二区三区精品视频| 免费看日本毛片| 欧美一区二区三区高清视频| 91超碰在线电影| 中文字幕在线直播| 亚洲激情视频在线观看| 337p粉嫩色噜噜噜大肥臀| 亚洲色图在线播放| 精品久久久99| 久久中文字幕二区| 国产精品视频专区| 国产精品久久一区二区三区不卡 | 91亚洲国产成人久久精品网站| 99这里有精品视频| 久久女同互慰一区二区三区| 无码 制服 丝袜 国产 另类| 经典一区二区| 不卡的av一区| av久久网站| 亚洲人成在线播放| 精品国产亚洲一区二区麻豆| 亚洲婷婷在线视频| 中文字幕一区二区人妻在线不卡| 国产精品综合视频| 亚欧在线免费观看| 欧美在线色图| 国产精品一区在线观看| 欧美系列精品| 亚洲天堂一区二区三区| 国产九色在线播放九色| 91玉足脚交白嫩脚丫在线播放| 少妇无码av无码专区在线观看| 日韩欧美午夜| 久久久久se| 少妇一区视频| 在线色欧美三级视频| 在线视频 中文字幕| 自拍偷拍欧美精品| 日韩久久久久久久久久久| 午夜精品999| 国产视频一区二区三区四区| www.成人| 午夜精品美女自拍福到在线| 免费福利在线视频| 欧美v日韩v国产v| 国产美女www爽爽爽视频| 欧美色图在线观看| 精品无码一区二区三区的天堂| 午夜天堂影视香蕉久久| 亚洲一区二区91| 亚洲一区二区三区四区中文字幕| 草草地址线路①屁屁影院成人| 国产精品一区二区在线看| 国产欧美激情视频| 狠狠色丁香婷婷综合久久片| 久久人人爽av| 九色综合狠狠综合久久| 色婷婷综合网站| 六月丁香婷婷色狠狠久久| 亚洲一区二区蜜桃| 久热成人在线视频| 嫩草视频免费在线观看| 国产在线精品一区二区夜色 | 日韩成人av电影在线| 精品国产不卡| 亚洲欧洲精品在线| 国产韩日影视精品| 国产偷国产偷亚洲高清97cao| 日韩一区二区三区精品视频第3页| 97视频在线看| 伊人色综合一区二区三区影院视频| xvideos亚洲| 黄色av网站在线播放| 久久97精品久久久久久久不卡| 欧美日韩经典丝袜| 亚洲精品国产成人久久av盗摄| 欧美黑人在线观看| 好看不卡的中文字幕| 国产无限制自拍| 久久亚洲欧洲| 裸体裸乳免费看| 欧美伊人久久| 国产不卡一区二区视频| 美女精品在线| 日本午夜激情视频| 免费看的黄色欧美网站| 性欧美极品xxxx欧美一区二区| 强制捆绑调教一区二区| 日韩高清在线一区二区| 成人黄色小视频在线观看| www.中文字幕av| 成人av中文字幕| 日本aaa视频| 中文字幕一区二区三区精华液| 欧美极品视频在线观看| 岛国视频午夜一区免费在线观看| 波多野结衣一区二区三区四区| 欧美另类久久久品| 香蕉视频911| 久久精品国产成人| 97超碰免费在线| 国产精品久久久久久久久久99| 免费观看亚洲视频大全| 欧美凹凸一区二区三区视频 | 国产综合激情| 激情婷婷综合网| 亚洲国产精品第一区二区| 亚洲中文字幕久久精品无码喷水| 久久综合综合久久综合| www.超碰97| 亚洲三级久久久| 91video| 懂色av影视一区二区三区| 亚洲综合一区中| 亚洲精品720p| 在线观看午夜av| 久久av资源网站| a欧美人片人妖| 99久re热视频这里只有精品6| 精品国产一区二区三区久久久樱花| 国产毛片久久久久久国产毛片| 美国一区二区三区在线播放 | 国产精品卡一卡二卡三| 免费观看a级片| 亚洲国产精品天堂| 91精东传媒理伦片在线观看| 国产视频亚洲视频| 日韩欧美一区二区在线观看| 美日韩中文字幕| 欧美亚洲另类在线一区二区三区| 欧美久久综合| 国产wwwxx| 久久久久青草大香线综合精品| 免费毛片视频网站| 亚洲成人tv网| 亚洲av综合色区无码一区爱av | 日韩av播放器| av一区二区三区| 久久免费公开视频| 精品久久久视频| www.精品视频| 久色乳综合思思在线视频| 日本h片久久| 日本免费高清一区| 美女精品在线| 中文字幕在线看高清电影| 粉嫩老牛aⅴ一区二区三区| 亚洲狼人综合网| 欧美激情亚洲另类| 亚洲伦乱视频| 欧美日韩视频在线一区二区观看视频| 亚洲另类视频| 日本免费福利视频| 狠狠色香婷婷久久亚洲精品| 无码国产色欲xxxx视频| 97国产suv精品一区二区62| 极品尤物一区| 久久久久久久久中文字幕| 91在线精品入口| 中文字幕日韩在线播放| 日本免费久久| 日韩欧美一区二区三区久久婷婷| 日韩精品午夜视频| 欧美在线a视频| 亚洲日本一区二区三区| 国产三级伦理片| 欧美激情第三页| 开心激情综合| 黄色片一级视频| 亚洲国产精品二十页| 91精品人妻一区二区三区果冻| 久久香蕉国产线看观看av| 清纯唯美激情亚洲| 2018中文字幕第一页| 99久久综合国产精品| 免费视频久久久| 中文字幕亚洲欧美一区二区三区 | 91久久久久久久一区二区| 欧美国产先锋| 中文字幕人妻一区二区三区| 日本一区二区三区在线不卡| 免费在线视频观看| 亚洲国产精品久久精品怡红院| 日本不卡免费高清视频在线| 欧美日韩一区二区三区在线视频 | 日本一区二区三区四区视频| 菠萝蜜一区二区| 两性午夜免费视频| 午夜精品在线看| 99视频在线观看地址| 91香蕉嫩草影院入口| 99综合在线| 国产探花一区二区三区| 亚洲国产精品精华液ab| 国产精品嫩草影院精东| 中文字幕欧美日韩| 精品中文字幕一区二区三区| 精品视频在线观看一区| 国产日韩视频一区二区三区| 五月天激情国产综合婷婷婷| 中文精品99久久国产香蕉| 视频一区中文字幕精品| 亚洲国产精品久久久久爰色欲| 亚洲欧美综合网| 人成免费电影一二三区在线观看| 久久青草福利网站|