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

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

Springboot+Netty+Websocket實現消息推送實例

瀏覽:2日期:2023-03-26 08:29:03
前言

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

Netty框架的優勢

1. API使用簡單,開發門檻低; 2. 功能強大,預置了多種編解碼功能,支持多種主流協議; 3. 定制能力強,可以通過ChannelHandler對通信框架進行靈活地擴展; 4. 性能高,通過與其他業界主流的NIO框架對比,Netty的綜合性能最優; 5. 成熟、穩定,Netty修復了已經發現的所有JDK NIO BUG,業務開發人員不需要再為NIO的BUG而煩惱

提示:以下是本篇文章正文內容,下面案例可供參考

一、引入netty依賴

<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.48.Final</version></dependency>二、使用步驟

1.引入基礎配置類

package com.test.netty;public enum Cmd { START('000', '連接成功'), WMESSAGE('001', '消息提醒'), ; private String cmd; private String desc; Cmd(String cmd, String desc) { this.cmd = cmd; this.desc = desc; } public String getCmd() { return cmd; } public String getDesc() { return desc; }}

2.netty服務啟動監聽器

package com.test.netty;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelOption;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.nio.NioServerSocketChannel;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.ApplicationRunner;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Component;/** * @author test * <p> * 服務啟動監聽器 **/@Slf4j@Componentpublic class NettyServer { @Value('${server.netty.port}') private int port; @Autowired private ServerChannelInitializer serverChannelInitializer; @Bean ApplicationRunner nettyRunner() { return args -> { //new 一個主線程組 EventLoopGroup bossGroup = new NioEventLoopGroup(1); //new 一個工作線程組 EventLoopGroup workGroup = new NioEventLoopGroup(); ServerBootstrap bootstrap = new ServerBootstrap() .group(bossGroup, workGroup) .channel(NioServerSocketChannel.class) .childHandler(serverChannelInitializer) //設置隊列大小 .option(ChannelOption.SO_BACKLOG, 1024) // 兩小時內沒有數據的通信時,TCP會自動發送一個活動探測數據報文 .childOption(ChannelOption.SO_KEEPALIVE, true); //綁定端口,開始接收進來的連接 try { ChannelFuture future = bootstrap.bind(port).sync(); log.info('服務器啟動開始監聽端口: {}', port); future.channel().closeFuture().sync(); } catch (InterruptedException e) { e.printStackTrace(); } finally { //關閉主線程組 bossGroup.shutdownGracefully(); //關閉工作線程組 workGroup.shutdownGracefully(); } }; }}

3.netty服務端處理器

package com.test.netty;import com.test.common.util.JsonUtil;import io.netty.channel.Channel;import io.netty.channel.ChannelHandler;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.SimpleChannelInboundHandler;import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import java.net.URLDecoder;import java.util.*;/** * @author test * <p> * netty服務端處理器 **/@Slf4j@Component@ChannelHandler.Sharablepublic class NettyServerHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> { @Autowired private ServerChannelCache cache; private static final String dataKey = 'test='; @Data public static class ChannelCache { } /** * 客戶端連接會觸發 */ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { Channel channel = ctx.channel(); log.info('通道連接已打開,ID->{}......', channel.id().asLongText()); } @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { if (evt instanceof WebSocketServerProtocolHandler.HandshakeComplete) { Channel channel = ctx.channel(); WebSocketServerProtocolHandler.HandshakeComplete handshakeComplete = (WebSocketServerProtocolHandler.HandshakeComplete) evt; String requestUri = handshakeComplete.requestUri(); requestUri = URLDecoder.decode(requestUri, 'UTF-8'); log.info('HANDSHAKE_COMPLETE,ID->{},URI->{}', channel.id().asLongText(), requestUri); String socketKey = requestUri.substring(requestUri.lastIndexOf(dataKey) + dataKey.length()); if (socketKey.length() > 0) { cache.add(socketKey, channel); this.send(channel, Cmd.DOWN_START, null); } else { channel.disconnect(); ctx.close(); } } super.userEventTriggered(ctx, evt); } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { Channel channel = ctx.channel(); log.info('通道連接已斷開,ID->{},用戶ID->{}......', channel.id().asLongText(), cache.getCacheId(channel)); cache.remove(channel); } /** * 發生異常觸發 */ @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { Channel channel = ctx.channel(); log.error('連接出現異常,ID->{},用戶ID->{},異常->{}......', channel.id().asLongText(), cache.getCacheId(channel), cause.getMessage(), cause); cache.remove(channel); ctx.close(); } /** * 客戶端發消息會觸發 */ @Override protected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame msg) throws Exception { try { // log.info('接收到客戶端發送的消息:{}', msg.text()); ctx.channel().writeAndFlush(new TextWebSocketFrame(JsonUtil.toString(Collections.singletonMap('cmd', '100')))); } catch (Exception e) { log.error('消息處理異常:{}', e.getMessage(), e); } } public void send(Cmd cmd, String id, Object obj) { HashMap<String, Channel> channels = cache.get(id); if (channels == null) { return; } Map<String, Object> data = new LinkedHashMap<>(); data.put('cmd', cmd.getCmd()); data.put('data', obj); String msg = JsonUtil.toString(data); log.info('服務器下發消息: {}', msg); channels.values().forEach(channel -> { channel.writeAndFlush(new TextWebSocketFrame(msg)); }); } public void send(Channel channel, Cmd cmd, Object obj) { Map<String, Object> data = new LinkedHashMap<>(); data.put('cmd', cmd.getCmd()); data.put('data', obj); String msg = JsonUtil.toString(data); log.info('服務器下發消息: {}', msg); channel.writeAndFlush(new TextWebSocketFrame(msg)); }}

4.netty服務端緩存類

package com.test.netty;import io.netty.channel.Channel;import io.netty.util.AttributeKey;import org.springframework.stereotype.Component;import java.util.HashMap;import java.util.concurrent.ConcurrentHashMap;@Componentpublic class ServerChannelCache { private static final ConcurrentHashMap<String, HashMap<String, Channel>> CACHE_MAP = new ConcurrentHashMap<>(); private static final AttributeKey<String> CHANNEL_ATTR_KEY = AttributeKey.valueOf('test'); public String getCacheId(Channel channel) { return channel.attr(CHANNEL_ATTR_KEY).get(); } public void add(String cacheId, Channel channel) { channel.attr(CHANNEL_ATTR_KEY).set(cacheId); HashMap<String, Channel> hashMap = CACHE_MAP.get(cacheId); if (hashMap == null) { hashMap = new HashMap<>(); } hashMap.put(channel.id().asShortText(), channel); CACHE_MAP.put(cacheId, hashMap); } public HashMap<String, Channel> get(String cacheId) { if (cacheId == null) { return null; } return CACHE_MAP.get(cacheId); } public void remove(Channel channel) { String cacheId = getCacheId(channel); if (cacheId == null) { return; } HashMap<String, Channel> hashMap = CACHE_MAP.get(cacheId); if (hashMap == null) { hashMap = new HashMap<>(); } hashMap.remove(channel.id().asShortText()); CACHE_MAP.put(cacheId, hashMap); }}

5.netty服務初始化器

package com.test.netty;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelPipeline;import io.netty.channel.socket.SocketChannel;import io.netty.handler.codec.http.HttpObjectAggregator;import io.netty.handler.codec.http.HttpServerCodec;import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;import io.netty.handler.stream.ChunkedWriteHandler;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;/** * @author test * <p> * netty服務初始化器 **/@Componentpublic class ServerChannelInitializer extends ChannelInitializer<SocketChannel> { @Autowired private NettyServerHandler nettyServerHandler; @Override protected void initChannel(SocketChannel socketChannel) throws Exception { ChannelPipeline pipeline = socketChannel.pipeline(); pipeline.addLast(new HttpServerCodec()); pipeline.addLast(new ChunkedWriteHandler()); pipeline.addLast(new HttpObjectAggregator(8192)); pipeline.addLast(new WebSocketServerProtocolHandler('/test.io', true, 5000)); pipeline.addLast(nettyServerHandler); }}

6.html測試

<!DOCTYPE HTML><html> <head> <meta charset='utf-8'> <title>test</title> <script type='text/javascript'> function WebSocketTest() { if ('WebSocket' in window) { alert('您的瀏覽器支持 WebSocket!');// 打開一個 web socket var ws = new WebSocket('ws://localhost:port/test.io');ws.onopen = function() { // Web Socket 已連接上,使用 send() 方法發送數據 ws.send('發送數據'); alert('數據發送中...'); };ws.onmessage = function (evt) { var received_msg = evt.data; alert('數據已接收...'); };ws.onclose = function() { // 關閉 websocket alert('連接已關閉...'); }; } else { // 瀏覽器不支持 WebSocket alert('您的瀏覽器不支持 WebSocket!'); } } </script> </head> <body> <div id='sse'> <a href='javascript:WebSocketTest()' rel='external nofollow' >運行 WebSocket</a> </div> </body></html>

7.vue測試

mounted() { this.initWebsocket(); }, methods: { initWebsocket() { let websocket = new WebSocket(’ws://localhost:port/test.io?test=123456’); websocket.onmessage = (event) => { let msg = JSON.parse(event.data); switch (msg.cmd) { case '000': this.$message({type: ’success’,message: '建立實時連接成功!',duration: 1000 }) setInterval(()=>{websocket.send('heartbeat')},60*1000); break; case '001': this.$message.warning('收到一條新的信息,請及時查看!') break; } } websocket.onclose = () => { setTimeout(()=>{ this.initWebsocket(); },30*1000); } websocket.onerror = () => { setTimeout(()=>{ this.initWebsocket(); },30*1000); } }, },![在這里插入圖片描述](https://img-blog.csdnimg.cn/20210107160420568.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1X3Fpbmdfc29uZw==,size_16,color_FFFFFF,t_70#pic_center)

8.服務器下發消息

@Autowiredprivate NettyServerHandler nettyServerHandler;nettyServerHandler.send(CmdWeb.WMESSAGE, id, message);

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

標簽: Spring
相關文章:
主站蜘蛛池模板: 国产精品久久久久一区二区三区 | 欧美一区| av免费网站在线观看 | 国产三区在线视频 | 国产精品久久久久久久久污网站 | 日韩视频精品 | 日本久久久一区二区三区 | 91亚洲精品乱码久久久久久蜜桃 | 欧美久久视频 | 久久精品中文 | 99免费在线视频 | 五月天婷婷国产精品 | 日本免费网 | 久久精品这里热有精品 | 另类sb东北妇女av | 国产精品一区在线观看 | 在线视频 欧美日韩 | 欧美精品第一页 | 91精品久久久久久久久中文字幕 | 午夜a v电影 | 九九99 | 亚洲国产成人精品女人 | 国产美女一区二区 | 久久国产精品视频 | 欧美日韩一区二区三区四区 | 91免费观看| 欧美一级在线免费观看 | 午夜在线电影 | 久久久精品一区二区三区 | 不卡一区二区三区四区 | 亚洲综合大片69999 | 美女吊逼 | 九色91视频| 成人免费在线观看 | 免费观看一区二区三区 | 中文字幕 国产 | 久久久久国产视频 | 国产精品美女久久久久久久久久久 | 最近中文字幕免费观看 | 毛片入口 | 欧美一级黄色大片 | 麻豆色呦呦| 在线观看成人网 | 色天天综合久久久久综合片 | 色天天综合久久久久综合片 | 可以免费看黄视频的网站 | 狠狠的干| 国产成人精品高清久久 | 久久精品亚洲 | 免费黄色看片 | t66y最新地址一地址二69 | 91在线入口| 一区二区三区在线免费观看 | bxbx成人精品一区二区三区 | 99草草| 欧美第7页 | 97久久精品人人做人人爽50路 | 免费国产黄网站在线观看视频 | 久久波多野结衣 | 天天拍天天干天天操 | 国产乱码久久久久久一区二区 | 黄色高清视频 | 99久久精品免费看国产四区 | 国产精品2区 | 欧美日韩视频在线第一区 | 二区视频 | 国产最新精品 | 99久久精品免费看国产免费粉嫩 | 欧美hdfree性xxxx | 日日爱影视 | 日韩成人精品在线 | 国产中文字幕在线 | a√天堂资源在线 | 日韩在线资源 | 在线观看中文字幕 | 精品视频在线免费 | 视频精品一区二区三区 | 一区二区三区高清 | 国产精品欧美一区二区 | 久久综合一区二区三区 | 97色综合 | 古风h啪肉1v1摄政王 | 中文字幕一区二区三区乱码图片 | 影音先锋亚洲精品 | 精品久久一区二区三区 | 久久精品这里热有精品 | 亚洲精品一区二区三区精华液 | 人人爱夜夜爽日日视频 | 久久综合一区 | 麻豆免费短视频 | 精品一区二区三区免费看 | 97久久久久久久久久久久 | 99影视 | 精品综合 | 国产精品久久久久久吹潮 | 欧美日韩国产中文 | 久久久久久久国产精品 | 一区二区三区四区精品 | 丁香六月av| 国产成人片 | 精品久久久一 | 欧美激情精品久久久久久 | 五月天婷婷社区 | 91尤物网站网红尤物福利 | 亚洲综合国产 | 日韩欧美在线视频免费观看 | 中文字幕天堂在线 | 97国产精品| 欧美天天 | 亚洲精品一区中文字幕乱码 | 国产精品久久久久久久久久久久久久久久 | 91香蕉视频 | 亚洲男人天堂网 | 亚洲网站免费看 | 国产目拍亚洲精品99久久精品 | 综合久久久久 | 成人美女免费网站视频 | 国产视频久久 | www97影院 | 成人精品视频一区二区三区 | 高清视频一区 | 国产在线观看高清 | 天天干一干 | 色性av | 香蕉久久久久久 | 99国内精品久久久久久久 | 久久人人爽人人爽 | 夜夜操天天干, | 综合网视频| 国产精品福利91 | 4hu网站| 91av在| 亚洲欧洲一区二区 | 国产一区二区三区四区在线观看 | 欧美亚洲日本 | 国产激情久久久久久 | 欧美日韩一区二区三区在线观看 | 性高湖久久久久久久久 | 国产亚洲成av人片在线观看桃 | 国产一区二区av | 国产成人精品一区二区三区视频 | 国产一区精品电影 | 免费观看成人性生生活片 | 日本免费在线 | 国产高清在线精品一区二区三区 | 成年人视频免费在线看 | av黄色一级片 | 亚洲精品免费在线观看 | 亚洲高清在线视频 | 国产亚洲一区在线 | 午夜免费观看网站 | 国产精品久久久久久久久免费桃花 | 羞视频在线观看 | 91亚洲国产成人久久精品网站 | 久久久久女人精品毛片九一韩国 | 国产欧美日韩一区二区三区 | 91天堂| 在线欧美视频 | 日韩欧美视频一区 | 国产一区二区三区在线 | 天堂中文在线视频 | 日本在线一区二区 | 日韩欧美国产一区二区 | 日韩视频精品 | 欧美日韩激情一区二区三区 | 国产精品永久免费自在线观看 | 99久久婷婷国产综合精品 | 美女久久久 | 超碰一区 | 一区二区三区亚洲精品国 | 蜜月久综合久久综合国产 | 精品久久香蕉国产线看观看亚洲 | 国产精品久久久久久久久免费软件 | 成年视频在线观看福利资源 | 亚洲精品一区二区三区蜜桃久 | 亚洲a网 | 日韩成人在线网站 | 亚洲视频中文字幕 | 精品国产一区二区三区久久久 | 色先锋av资源中文字幕 | 日韩精品在线视频观看 | 一区二区三区在线免费观看 | 激情一区二区三区 | 亚洲三区在线观看 | 免费av片| 91精品国产91久久综合桃花 | 国产精品久久免费看 | 亚洲国产中文字幕 | 久久婷婷国产麻豆91天堂 | 亚洲国产精品99久久久久久久久 | 成人午夜毛片 | 日韩人体在线 | 成人激情视频在线 | av在线日韩 | 一区二区av| 一区二区三区不卡视频 | 亚洲性人人天天夜夜摸 | 中文字幕一二三区 | 国产精品国产三级国产aⅴ入口 | 无套内谢孕妇毛片免费看红桃影视 | 亚洲国产高清视频 | 久久a毛片 | 午夜艹 | 久久久久久亚洲精品 | 香蕉成人啪国产精品视频综合网 | 国产视频中文字幕 | 精品久久99| www.中文字幕| 亚洲视频在线看 | 欧美福利影院 | 欧美在线一区二区三区 | 中文字幕亚洲区 | 精品无码久久久久国产 | 国产精品毛片久久久久久久 | 色综合99 | 国产欧美综合一区二区三区 | 国产一区二区三区在线视频 | 精品一区二区三区四区视频 | 在线a视频| 日韩成人在线一区 | 影视一区二区 | 黄色视频a级毛片 | 毛片网页| 久综合网| 午夜影院色 | 精品日韩一区二区三区 | 国产aaa毛片 | 欧美日韩国产在线看 | 羞羞视频在线播放 | 精品久久久久久久久久久久 | 国产精品久久久久久吹潮 | 色女人av | 色综合天天综合网国产成人网 | 日韩精品视频在线播放 | 精品三级三级三级三级三级 | 亚洲三区在线观看 | 91免费看 | 亚洲成人1区 | 欧美日韩精品一区二区三区四区 | 日韩一区久久 | 亚洲欧洲无码一区二区三区 | 粉嫩高清一区二区三区精品视频 | 在线观看国产小视频 | 国产成人精品亚洲777人妖 | 99色综合 | 亚洲人成在线观看 | 国产综合精品一区二区三区 | 91久久精品国产91久久 | 亚洲第一中文字幕 | 成人a级网站 | 国产精品久久毛片 | 久久精品视频免费观看 | 午夜高清视频 | 欧美精品一区二区三区视频 | 91成人短视频在线观看 | 精久久| 干中文字幕 | 欧美成年网站 | 在线观看免费av电影 | 不卡一区二区三区四区 | 国产真实乱全部视频 | 国产视频久久久 | 日韩五月| 久久久国产一区二区三区四区小说 | 亚洲一区二区三区四区在线观看 | 亚洲不卡高清视频 | 狠狠的日| 日本三级黄色录像 | 久久国产精品一区二区 | 国产精品久久久久久久久久妇女 | 97影院在线午夜 | 色视频网站在线观看 | 日韩成人精品 | 一区二区三区成人久久爱 | 99久久久无码国产精品 | 欧美区在线 | 中文字幕三区 | 精品无码久久久久国产 | 国产精品美女av | 黄色国产一级视频 | 亚洲精品在 | 日韩一区二区视频在线 | 国产一区二区三区高清 | 欧美亚洲视频 | 天天干天天操 | 精品亚洲一区二区三区 | 成人精品一区二区三区中文字幕 | 日韩精品一区二区三区第95 | 国产精品久久久久久久岛一牛影视 | 女同久久 | 久久成人国产精品 | 精品无人乱码一区二区三区 | 俺要去97中文字幕 | 一级视频黄色 | 毛片免费看 | 久久久精品 | 国产一区二区三区在线免费观看 | 性视频网 | 亚洲xx视频 | 日本欧美在线观看 | 不卡免费在线视频 | 国产精品一区二区在线 | 二区久久 | 亚洲影视一区 | 亚州成人 | 国产一区二区免费 | 亚洲嫩草 | 日韩精品久久久久久 | 亚洲成人久久久 | 欧美成人综合在线 | 国产精品网站在线观看 | 久久高清 | 欧美一区二区免费 | 亚洲国产一区视频 | 蜜臀网| 成人久久久久爱 | 国产精品久久久久久亚洲调教 | 欧美一级在线视频 | 亚洲永久免费观看 | 午夜精品久久久久久久久久久久 | 精品国内| 日韩成人免费 | 久草久草久草 | 国产亚洲综合精品 | 中文字幕天堂在线 | 色综合欧美 | 色综合久久伊人 | 成人精品鲁一区一区二区 | 国产三级在线播放 | 欧美在线一区二区三区 | 青青草免费在线视频 | 国产精品18久久久久久久久久久久 | 国产精品久久久久久久久 | 青草成人免费视频 | 免费视频一区 | 婷婷色av | 亚洲精久久 | 久草久草久 | yy6080久久伦理一区二区 | 精品国产乱码久久久久久蜜臀 | 97久久精品午夜一区二区 | 黄色资源在线观看 | 国产一级片 | 国产日韩精品一区二区 | 欧美日韩在线一区二区 | 日本妇人成熟免费视频 | 精品久久久久久久久久久久久久 | 91精品国产一区二区三区香蕉 | 干中文字幕 | 日韩在线中文字幕 | 久久99亚洲精品 | 在线免费观看黄色 | 欧美精品一区二区在线观看 | 九九热最新视频 | av在线免费播放 | 激情综合五月 | 看黄网址 | 美女福利视频网站 | 欧美高清一区 | 成人午夜剧场 | 亚洲成人高清 | 日日碰碰 | 国产区第一页 | 国产精品国产精品国产专区不卡 | 国产99页| 男女激情网址 | 欧美成在线观看 | 中文字幕乱码亚洲精品一区 | 偷拍自拍网站 | 国产最好的av国产大片 | 婷婷色av| 欧美激情自拍偷拍 | 91欧美激情一区二区三区成人 | 国产精品亚洲精品 | 一区二区免费视频 | 日韩精品三区 | 少妇av片 | 一级片视频免费 | 伊人伊人 | 国产精品视频成人 | 国产一级特黄毛片在线毛片 | 日韩视频在线一区二区 | 国产干干干 | 免费午夜视频 | 女人久久久久久久 | 国产成人久久精品77777 | 国产精品99 | 美日韩在线 | 99久久99 | 91视频在线观看 | 欧美午夜寂寞影院 | 亚洲国产精品一区二区久久 | 亚洲a级| 国产精品久久久久久亚洲调教 | 亚洲一区二区三区视频 | 日韩福利在线观看 | 亚洲三区在线观看 | 亚洲免费在线视频 | 日韩国产一区二区 | 日韩国产精品一区二区三区 | 高清一区二区三区 | 国产成人精品免费 | 亚洲午夜电影 | 欧美综合久久 | www操com | 国产精品久久精品 | 色无欲天天天影视综合网 | 人人插人人干 | 欧美一级内谢 | 一区视频在线 | 午夜免费小视频 | 涩涩视频在线看 | 国产高潮好爽受不了了夜色 | 黄色片视频在线观看 | 中文字幕第十二页 | 欧美6一10sex性hd | 激情自拍偷拍 | 久久精品一级 | 亚洲视频中文字幕 | 日本成人一二三区 | 成人一区二区电影 | 97在线免费观看 | 国产精品久久久久久久久动漫 | 欧美久久久久久 | 久久伊99综合婷婷久久伊 | 亚洲一区二区在线视频 | 91网在线播放 | 精品视频一区二区三区在线观看 | 黄在线免费观看 | 免费黄色网止 | 污污视频网站 | 欧美午夜精品久久久久久人妖 | 久久国产一区 | 亚洲一区二区三区久久 | 久久精品99国产精品日本 | 久久成人精品 | 狠狠躁夜夜躁人人爽天天高潮 | 91精品综合久久久久久五月天 | 国产乱码精品一区二区三区忘忧草 | 日本黄色大片免费 | 91av在线免费看 | 日韩不卡一区二区三区 | 玖玖操 | 国产伦精品久久久一区二区三区 | 久久精品国产亚卅av嘿嘿 | 亚洲欧美少妇 | 中文字幕日韩欧美 | 韩国三级中文字幕hd久久精品 | 亚洲国产精品成人 | 日韩在线短视频 | 99视频精品 | 精品在线不卡 | 国产精品一卡二卡三卡 | 国产欧美在线观看 | 巴西性猛交xxxx免费看久久久 | 精品无码久久久久久国产 | 欧美一级二级三级视频 | 亚洲免费成人 | 亚洲美乳中文字幕 | 欧美在线视频一区二区 | av黄色在线 | 亚洲一区二区三区四区五区午夜 | 91成人免费在线视频 | 欧美日韩国产一区二区在线观看 | 日韩不卡一区二区 | 精品一区久久 | 91免费观看| 国产一区二区av | 97精品久久 | 色婷婷欧美 | 亚洲综合色视频在线观看 | 97国产免费 | 欧美日韩激情 | jizz中国zz女人18高潮 | 欧美中文在线 | 成人影院欧美黄色 | 一区二区三区国产 | 久久91 | 日韩一区二区在线观看 | 国产精品视频播放 | 精品久久一二三区 | 在线观看视频一区二区三区 | 激情一区| av一级久久 | 天堂免费在线观看视频 | 少妇精品久久久久久久久久 | 色欧美片视频在线观看 | 久久精品国产一区二区三区不卡 | 久久99精品国产99久久6男男 | 亚洲第一页中文字幕 | 国产精品久久综合 | 成年人网站免费在线观看 | 午夜视频在线观看网址 | 欧美福利在线观看 | 91网在线播放 | 欧美一区免费 | 国产免费黄色 | 久久精品不卡 | 黄色网址免费在线 | 国产精品婷婷午夜在线观看 | 亚洲第一黄色 | 五月天婷婷综合 | 日日夜夜精品免费视频 | 日韩天堂| 久久精品一二三四 | www九九热| 91一区在线 | 二区久久 | 国产精品美女久久久 | 91免费在线视频 | 国产精品一区二区三区在线 | 在线中文字幕视频 | 国产区视频在线观看 | av免费网站| 国产精品一二三区 | 国内精品视频一区二区三区八戒 | 欧美极品欧美精品欧美视频 | 一级一级黄色片 | 国产伦精品久久久一区二区三区 | 亚洲欧洲视频在线 | 美女一级黄 | 黄色小视频在线免费观看 | 国产一级片播放 | 青草视频在线免费观看 | 精品九九九 | 国产成人精品一区二区三区视频 | 美女在线视频一区二区 | 色婷婷av久久久久久久 | 特黄视频 | 91精品久久久久久 | 亚欧毛片| 久久网日本 | 国产精品一任线免费观看 | 51ⅴ精品国产91久久久久久 | 欧美色欧美亚洲另类七区 | 国产精品久久久久久久一区探花 | 91久久久久久久久久久久久久久久 | 欧洲精品一区二区 | 一级大片一级一大片 | 在线观看精品91福利 | 欧美日韩精品一区二区三区 | 天堂在线视频 | 国产精品99精品久久免费 | 国产精品成人av | 久久久久久久一区二区三区 | 日韩精品一区二区三区第95 | 电影午夜精品一区二区三区 | 欧美激情一区二区三区在线观看 | 亚洲av毛片一区二二区三三区 | 品久久久久久久久久96高清 | 神马午夜| 国产一区二区精品在线 | 在线a级毛片| 欧美一级特黄aaaaaaa在线观看 | 亚洲欧美自拍视频 | 亚欧洲精品视频在线观看 | 国产精选一区二区三区 | 国产精品久久久久不卡 | 夜夜操av| 日本精品在线播放 | 偷拍电影一区二区三区 | 一区二区三区在线免费看 | 成人精品网 | 欧美自拍视频 | 亚洲成人免费视频在线观看 | 天天操天天碰 | 色视频网站在线观看一=区 日韩一二三区 | 欧美日韩第一 | 一级一级国产片 | 精品一区二区三区四区 | 91视频免费看片 | 毛片真人毛毛片毛片 | 午夜激情在线观看 | 第一色在线 | 蜜桃一区二区 | 国产精品日韩欧美一区二区三区 | 玖玖精品视频 | 国产九色视频 | 国产午夜精品一区二区三区视频 | 成人区一区二区三区 | 国产免费看 | 精品96久久久久久中文字幕无 | 亚洲午夜一区 | 超碰97人人人人人蜜桃 | 亚洲精品影院 | 久久伊人一区 | 国产精品免费一区二区三区四区 | 亚洲网站在线观看 | 久草福利 | 成人欧美一区二区三区白人 | 精品一区二区三 | 国产精品国产 | 二区三区 | 91精品国产色综合久久不卡98口 | 亚洲一区成人 | 欧美一级精品片在线看 | 亚洲国产精品久久人人爱 | 久久成人精品视频 | 亚洲国产成人久久 | 欧美激情国产日韩精品一区18 | 欧美视频区 | 欧美精品一区二区三区四区在线 | 91免费观看视频 | 日韩欧美国产网站 | 国产日韩精品在线观看 | 国产一区久久久 | 激情久久av一区av二区av三区 | 国产精品三级久久久久久电影 | 久久99国产精品久久99果冻传媒 | 2018国产精品 | 91精品久久久久久久久久 | 精品视频在线免费观看 | 久福利| 亚洲欧美一区二区在线观看 | 激情伊人 |