成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > PHP用swoole+websocket和redis實(shí)現(xiàn)web一對一聊天

PHP用swoole+websocket和redis實(shí)現(xiàn)web一對一聊天

熱門標(biāo)簽:江門回?fù)芡夂粝到y(tǒng) 天潤融通外呼系統(tǒng)好嗎 杭州語音電銷機(jī)器人 江西電銷機(jī)器人收費(fèi) 泊頭在哪里辦理400電話 欣思維地圖標(biāo)注 電銷機(jī)器人沒有效果怎么樣 高德地圖標(biāo)注店鋪收費(fèi)嗎 高德地圖標(biāo)注位置怎么標(biāo)注

Redis 實(shí)現(xiàn)每個(gè)連接websocket的服務(wù)都唯一綁定一個(gè)用戶。通過 用戶賬號 = websocket fd 存到redis中。

Mysql 實(shí)現(xiàn)離線消息池。如果一個(gè)用戶不在線,則其他用戶發(fā)送給他的消息暫時(shí)存儲在mysql。待該用戶上線時(shí),再從離線消息池取出發(fā)送。

具體參考代碼和相應(yīng)注釋:

?php
$server = new swoole_websocket_server("0.0.0.0", 9052);
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$db = new mysqli('127.0.0.1', 'test', 'test', 'thinkphp5');

$server->on('open', function (swoole_websocket_server $server, $request) {
 echo "server: handshake success with fd{$request->fd}\n";//$request->fd 是客戶端id
});

$server->on('message', function (swoole_websocket_server $server, $frame) {
 $data = json_decode($frame->data,true); 
 if($data['flag'] == 'init'){
  //用戶剛連接的時(shí)候初始化,每個(gè)用戶登錄時(shí)記錄該用戶對應(yīng)的fd
  $GLOBALS['redis']->set($data['from'], $frame->fd);
  //處理發(fā)給該用戶的離線消息
  $sql = "SELECT `from`,content FROM thinkphp5.app_offline WHERE `to`='{$data['from']}' AND `from`='{$data['to']}' AND `status`='0' ORDER BY addtime ASC;";
  if ($result = $GLOBALS['db']->query($sql)) {
   $re = array();
   while ($row = $result->fetch_assoc()) {
    array_push($re, $row);
   }
   $result->free();
   foreach($re as $content){
    $content = json_encode($content);
    $server->push($frame->fd , $content);
   }
   //設(shè)置消息池中的消息為已發(fā)送
   $sql = "UPDATE thinkphp5.app_offline SET `status`=1 WHERE `to`='{$data['from']}' AND `from`='{$data['to']}';";
   $GLOBALS['db']->query($sql);
  }
 }else if($data['flag'] == 'msg'){
  //非初始化的信息發(fā)送,一對一聊天,根據(jù)每個(gè)用戶對應(yīng)的fd發(fā)給特定用戶
  $tofd = $GLOBALS['redis']->get($data['to']); //消息要發(fā)給誰
  $fds = []; //所有在線的用戶(打開聊天窗口的用戶)
  foreach($server->connections as $fd){
   array_push($fds, $fd);
  }
  if(in_array($tofd,$fds)){
   $tmp['from'] = $data['from']; //消息來自于誰
   $tmp['content'] = $data['content']; //消息內(nèi)容
   $re = json_encode($tmp);
   $server->push($tofd , $re);
  }else{
   //該玩家不在線(不在聊天室內(nèi)),將信息發(fā)送到離線消息池
   $time = time();
   $sql = "INSERT INTO thinkphp5.app_offline (`to`,`from`,`content`,`status`,`addtime`) VALUES ('{$data['to']}','{$data['from']}','{$data['content']}','0','{$time}');";
   $GLOBALS['db']->query($sql);
  }
 }else if($data['flag'] == 'group'){
  //todo 群聊
  
 }else if($data['flag'] == 'all'){
  //全站廣播
  foreach($server->connections as $fd){
   $server->push($fd , $data);
  }
 } 
});

$server->on('close', function ($ser, $fd) {
 echo "client {$fd} closed\n";
});

$server->start();

客戶端代碼:

!DOCTYPE html>
html>
head>
 title>XST-app/title>
 meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
 meta name="viewport" content="width=device-width, initial-scale=0.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
 meta name="keywords" content="test" />
 meta name="description" content="test" />
 meta name="author" content="XST-APP" />
 meta content="yes" name="apple-mobile-web-app-capable" />
 meta content="black" name="apple-mobile-web-app-status-bar-style" />
 meta content="telephone=no" name="format-detection" />
  style type="text/css">
 body{background:url(/static/images/yuyin_bg.jpg);background-size:100%;}
 @media all and (min-width: 640px) {
  body,html,.wenwen-footer,.speak_window{width:640px!important;margin:0 auto}
  .speak_window,.wenwen-footer{left:50%!important;margin-left:-320px}
 }
 input,button{outline:none;}
 .wenwen-footer{width:100%;position:fixed;bottom:-5px;left:0;background:#fff;padding:3%;border-top:solid 1px #ddd;box-sizing:border-box;}
 .wenwen_btn,.wenwen_help{width:15%;text-align:center;}
 .wenwen_btn img,.wenwen_help img{height:40px;}
 .wenwen_text{height:40px;border-radius:5px;border:solid 1px #636162;box-sizing:border-box;width:66%;text-align:center;overflow:hidden;margin-left:2%;}
 .circle-button{padding:0 5px;}
 .wenwen_text .circle-button{font-size:14px;color:#666;line-height:38px;}
 .write_box{background:#fff;width:100%;height:40px;line-height:40px;}
 .write_box input{height:40px;padding:0 5px;line-height:40px;width:100%;box-sizing:border-box;border:0;}
 .wenwen_help button{width:95%;background:#42929d;color:#fff;border-radius:5px;border:0;height:40px;}
 #wenwen{height:100%;}
 .speak_window{overflow-y:scroll;height:100%;width:100%;position:fixed;top:50px;left:0;}
 .speak_box{margin-bottom:70px;padding:10px;}
 .question,.answer{margin-bottom:1rem;}
 .question{text-align:right;}
 .question>div{display:inline-block;}
 .left{float:left;}
 .right{float:right;}
 .clear{clear:both;}
 .heard_img{height:60px;width:60px;border-radius:5px;overflow:hidden;background:#ddd;}
 .heard_img img{width:100%;height:100%}
 .question_text,.answer_text{box-sizing:border-box;position:relative;display:table-cell;min-height:60px;}
 .question_text{padding-right:20px;}
 .answer_text{padding-left:20px;}
 .question_text p,.answer_text p{border-radius:10px;padding:.5rem;margin:0;font-size:14px;line-height:28px;box-sizing:border-box;vertical-align:middle;display:table-cell;height:30px;word-wrap:break-word;}
 .answer_text p{background:#fff;}
 .question_text p{background:#42929d;color:#fff;text-align:left;}
 .question_text i,.answer_text i{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;position:absolute;top:25px;}
 .answer_text i{border-right:10px solid #fff;left:10px;}
 .question_text i{border-left:10px solid #42929d;right:10px;}
 .answer_text p a{color:#42929d;display:inline-block;}
 .write_list{position:absolute;left:0;width:100%;background:#fff;border-top:solid 1px #ddd;padding:5px;line-height:30px;}
  /style>
/head>

body>
div id="header" class="head">
  div class="wrap">
    i class="menu_back">a href="javascript:history.go(-1);" rel="external nofollow" >/a>/i>
    div class="title">
      span class="title_d">p>與 {$tonickname} 的聊天/p>/span>
      div class="clear">/div>
    /div>
    !--i class="menu_share">/i-->
  /div>
/div>
input type="hidden" name="myemail" id="myemail" value="{$myemail}" />
input type="hidden" name="mynickname" id="mynickname" value="{$mynickname}" />
input type="hidden" name="myavatar" id="myavatar" value="{$myavatar}" />
input type="hidden" name="toemail" id="toemail" value="{$toemail}" />
input type="hidden" name="tonickname" id="tonickname" value="{$tonickname}" />
input type="hidden" name="toavatar" id="toavatar" value="{$toavatar}" />

!-- 對話內(nèi)容 -->
div class="speak_window">
 div class="speak_box">

 /div>
/div>
!-- 內(nèi)容輸入-->
div class="wenwen-footer">
 div class="wenwen_btn left">img src="/static/images/jp_btn.png">/div>
 div class="wenwen_text left">
  div class="write_box">input type="text" class="left" onKeyUp="keyup()" maxlength="100" placeholder="請輸入信息(100字以內(nèi))..." />/div> 
 /div>
 div class="wenwen_help right">
   button onClick="send()" class="right">發(fā)送/button>
 /div>
 div style="opacity:0;" class="clear">/div>
/div>

script type="text/javascript">
 if ("WebSocket" in window){
  var ws = new WebSocket("ws://192.168.0.1:9052");
  ws.onopen = function(){
   console.log("握手成功");
   var myemail = $("#myemail").val();
   var toemail = $("#toemail").val();
   var arr = {"flag":"init","from":myemail,"to":toemail};
   var str = JSON.stringify(arr);
   ws.send(str);
  };
  ws.onmessage = function(e){
   var toemail = $("#toemail").val();
   var toavatar = $("#toavatar").val();
   var obj = JSON.parse(e.data);
   console.log(e.data);
   //但同時(shí)與兩個(gè)人聊天時(shí),可能兩個(gè)人的消息都會出現(xiàn)在當(dāng)前窗口,所以此處加個(gè)判斷,此窗口只接收當(dāng)前聊天對象的消息,其他則忽略
   if(obj.from === toemail){
    var ans = 'div class="answer">div class="heard_img left">img src="'+toavatar+'">/div>';
     ans += 'div class="answer_text">p>'+obj.content+'/p>i>/i>';
     ans += '/div>/div>';
     $('.speak_box').append(ans);
     for_bottom();
   }
  };
  ws.onerror = function(){
   console.log("error");
   var str = 'div class="question">';
   str += 'div class="heard_img right">img src="/static/images/xitong.jpg">/div>';
   str += 'div class="question_text clear">p>聊天服務(wù)器出現(xiàn)異常,暫時(shí)無法提供服務(wù)。/p>i>/i>';
   str += '/div>/div>';
   $('.speak_box').append(str);
   $('.write_box input').val('');
   $('.write_box input').focus();
   autoWidth();
   for_bottom();
  };

  function send() {
   var content = $('.write_box input').val();
  if(content === ''){
   alert('請輸入消息!');
   $('.write_box input').focus();
  }else{
    var toemail = $("#toemail").val();
    var myemail = $("#myemail").val();
    var myavatar = $("#myavatar").val();
    var arr = {"flag":"msg","to":toemail,"from":myemail,"content":content};
    var msg = JSON.stringify(arr);
    console.log(msg);
    ws.send(msg); 
    var str = 'div class="question">';
    str += 'div class="heard_img right">img src="'+myavatar+'">/div>';
    str += 'div class="question_text clear">p>'+content+'/p>i>/i>';
    str += '/div>/div>';
   $('.speak_box').append(str);
   $('.write_box input').val('');
   $('.write_box input').focus();
   autoWidth();
   for_bottom();
   }
  
  }
 }else{
  alert("您的瀏覽器不支持 WebSocket!");
 }
   
 function for_bottom(){
 var speak_height = $('.speak_box').height();
 $('.speak_box,.speak_window').animate({scrollTop:speak_height},500);
 }
 
 function autoWidth(){
 $('.question_text').css('max-width',$('.question').width()-60);
 }
 
 autoWidth();
 
/script>

/body>
/html>

數(shù)據(jù)表結(jié)構(gòu):

CREATE TABLE `app_offline` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `from` varchar(50) DEFAULT NULL COMMENT '離線發(fā)送方',
 `to` varchar(50) DEFAULT NULL COMMENT '離線接收方',
 `content` varchar(1000) DEFAULT NULL COMMENT '發(fā)送的離線內(nèi)容',
 `status` tinyint(4) DEFAULT '0' COMMENT '發(fā)送狀態(tài):0-未發(fā)送,1-已發(fā)送',
 `addtime` int(11) DEFAULT NULL COMMENT '發(fā)送方發(fā)送時(shí)間',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

具體效果:


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • windows系統(tǒng)php環(huán)境安裝swoole具體步驟
  • php使用Swoole實(shí)現(xiàn)毫秒級定時(shí)任務(wù)的方法
  • php使用goto實(shí)現(xiàn)自動(dòng)重啟swoole、reactphp、workerman服務(wù)的代碼
  • PHP Swoole異步讀取、寫入文件操作示例
  • PHP之Swoole學(xué)習(xí)安裝教程

標(biāo)簽:內(nèi)江 大同 駐馬店 江門 石嘴山 深圳 雙鴨山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP用swoole+websocket和redis實(shí)現(xiàn)web一對一聊天》,本文關(guān)鍵詞  PHP,用,swoole+websocket,和,redis,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP用swoole+websocket和redis實(shí)現(xiàn)web一對一聊天》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP用swoole+websocket和redis實(shí)現(xiàn)web一對一聊天的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美日韩国产片| 日本高清视频一区| 国产精品久久三| 一区二区不卡视频在线观看| 国产aⅴ超薄肉色丝袜交足| 国产在线看片| 成人激情av在线| 午夜精品一区二区三区在线视| 免费做暖暖免费观看日本| 亚洲最大的免费视频网站| 97国产在线视频| 97精品久久久午夜一区二区三区| 成人在色线视频在线观看免费大全| 老司机午夜精品| 欧美成人网在线| 美女大黄三级视频在线观看| 亚洲 国产 欧美 日韩| 日本a一级在线免费播放| bdsm精品捆绑chinese女| 五月天综合网站| 免费不卡视频| 天天插天天操| 天堂av在线7| 国产精品网站在线| 中文字幕亚洲区| 免费观看亚洲视频大全| 日韩国产欧美| 久久99精品国产麻豆婷婷洗澡| 午夜精彩视频在线观看不卡| 97精品国产一区二区三区| 日韩av电影免费播放| 亚洲精品第一国产综合野| 亚洲免费av电影| 高清国产午夜精品久久久久久| 黑人精品无码一区二区三区AV| 先锋在线亚洲| 亚洲精品大片www| 懂色av中文一区二区三区天美| 国产精品自拍99| 青娱乐国产在线视频| 亚洲精品国久久99热| 99在线免费观看视频| 日韩极品在线| 天堂资源在线| 悠悠资源av网站| 中文字幕日韩av电影| 麻豆视频在线免费观看| 亚洲人成影视在线观看| 男人的天堂在线免费视频| 26uuu国产电影一区二区| 波多野结衣爱爱| 国产影视精品一区二区三区| 亚洲精品国产成人久久av盗摄| 亚洲天堂男人天堂女人天堂| 国产在线观看黄| 国产一级久久久久毛片精品| 日本中文字幕久久看| 色婷婷免费视频| 亚洲国产日韩在线观看| 欧亚一区二区三区| 五月天丁香花婷婷| 免费黄漫在线观看| 国产亚洲一区二区三区| 亚洲精品欧美在线| 天天色综合av| 亚洲色图27p| 国产原创popny丨九色| 亚洲第一搞黄网站| 搡老女人一区二区三区视频tv| 91成人免费网站| 丝袜情趣国产精品| 九九九九免费视频| 精品成在人线av无码免费看| 在线视频播放大全| 3d黄动漫网站| 激情五月婷婷六月| 中文有码在线观看| 色婷婷精品久久二区二区蜜臀av| 91jq激情在线观看| 九九九九九九九九| 亚洲视频在线一区二区| 一区二区三区国产好的精华液| 亚洲精品av在线| 欧美日本免费一区二区三区| 影音av资源站| 精品人伦一区二区三区蜜桃免费| 伊人色综合一区二区三区影院视频| 亚洲日本va在线观看| 日本一区二区三区在线观看| 精品精品欲导航| fc2ppv国产精品久久| av电影在线免费观看| 亚洲二区在线播放视频| 欧美吻胸吃奶大尺度电影| 色婷婷av金发美女在线播放| 国产欧亚日韩视频| 久久精品男女| 日本肉体xxxx裸体784大胆| 97香蕉超级碰碰久久免费软件| 久久黄色免费视频| 日韩欧美在线免费观看| 国产精品最新自拍| 欧美成人免费| 免费在线国产| 2024国产精品| 六月婷婷激情综合| 国产日韩av一区二区| 免费成人进口网站| 99精品欧美一区二区三区| 国产精品999999| 99久热在线精品视频观看| 日本中文字幕一区二区| 国内精品久久国产| 1pondo在线播放免费| 婷婷中文字幕一区| 青春草在线视频| 国产免费高清一区| 大尺度做爰床戏呻吟舒畅| www.一区二区.com| 围产精品久久久久久久| 欧美日韩中文国产一区发布| 蜜桃久久影院| 91久久精品日日躁夜夜躁国产| 日韩新的三级电影| 91福利电影| 中文在线第一页| 日韩亚洲一区在线播放| 国产精品自拍视频| а√天堂中文在线资源bt在线| 无吗不卡中文字幕| 男女视频在线观看免费| 日本欧美一二三区| 一区二区国产在线| 欧美亚洲成人xxx| 五月婷婷伊人网| 欧美国产另类| 久久久久久久999精品视频| 亚洲天堂男人av| 国产精品私拍pans大尺度在线| 久久6免费视频| av在线播放网| 亚洲欧美一区二区视频| 日本aaa在线观看| 国产乱子夫妻xx黑人xyx真爽| 日本一二三区视频免费高清| 日韩av色在线| 国产资源精品在线观看| 男人天堂手机在线视频| 欧美—级在线免费片| 久久国产午夜精品理论片最新版本| 日本三级欧美三级| 亚洲最大成人av| 特黄特黄的视频| 深夜福利一区| 欧洲熟妇的性久久久久久| 在线免费视频福利| 少妇bbbb搡bbbb| 久久久蜜桃一区二区| 91免费网站视频| 国产精品第100页| 成人在线免费看| 一区二区三区免费看| 久久精品嫩草影院| 国产精品一区二区av影院萌芽| 内射后入在线观看一区| 91精品蜜臀一区二区三区在线| 婷婷亚洲一区二区三区| 日韩视频久久| 亚洲人成网站77777在线观看| 国产午夜福利一区| 免费一级黄色大片| 国产精品毛片久久久久久| 17c精品麻豆一区二区免费| 国产日韩一区二区三免费高清| 日韩av大片在线观看| 人妻熟人中文字幕一区二区| av在线不卡电影| 精品国产一区二区三区久久狼黑人| 欧美一区二区三区男人的天堂| 中文字幕在线观看第一页| 热99re久久精品精品免费| 亚洲日本高清| 国产黄色小视频在线| 亚洲图区一区| 国产区一区二区三| 亚洲欧美日韩免费| 久久人人爽人人爽人人片av高清| 色婷婷一区二区三区| 国产欧美一区二区三区视频在线观看| 日韩欧美国产综合在线一区二区三区| 国产在线一级片| 欧美少妇一区二区| 视频一区视频二区欧美| 日韩专区中文字幕| 国产一区啦啦啦在线观看| 嫩草影院官网| 久久99久国产精品黄毛片入口| 亚欧精品视频一区二区三区| 精品国产乱码久久久久| 国产精品久久久久9999小说| av电影免费在线观看| 亚洲综合自拍一区| 黄色网络在线观看| 一呦二呦三呦精品国产| 久久免费一区| 欧美风情在线视频| 奇米影视亚洲色图| 欧美日韩亚洲一区二区三区在线观看| 国产探花在线观看视频| 成人做爰www看视频软件| 三上悠亚在线免费观看| 国产精品国产三级国产| 成人拍拍拍在线观看| 一本久道久久综合狠狠爱| 国产日韩欧美电影在线观看| 成人拍拍拍免费视频网站| 国产精品美女久久久免费| 美乳视频一区二区| 国产精品成人a在线观看| 老司机av福利| 青青草91久久久久久久久| 免费毛片观看| 国内欧美视频一区二区| 国产99久久久国产精品| 色婷婷香蕉在线一区二区| 中文字幕日韩一区二区三区| 国产在线观看不卡一区二区三区| 成人女人a毛片在线看| 久久综合久久综合九色| 奇米一区二区三区四区久久| 日日日日人人人夜夜夜2017| 写真片福利在线播放| 亚洲二区自拍| 色香欲www7777综合网| 97最新国自产拍视频在线完整在线看| 亚洲日本成人在线观看| 久久亚洲影音av资源网| 免费成人午夜视频| 日韩精品一区二区不卡| 欧美女优在线观看| 国产精品久久久久久网站| 91精品国产91久久久久青草| 免费观看成人www动漫视频| 亚洲精品美女在线观看| 中文字幕第一页亚洲| 一本到不卡免费一区二区| 国产成人精品亚洲精品色欲| 欧美黄色三级网站| 136fldh精品导航福利| 国产精品视频地址| 国产精品久久久久久久天堂第1集| 人妻av无码专区| 国产精品久久77777| 日韩限制级电影在线观看| 五月亚洲婷婷| 成人免费aaa| 亚洲欧美日韩精品久久| 一本色道久久88亚洲综合88| a√中文在线观看| 欧美三级电影在线| 国产美女精品一区二区三区| 日韩av电影网址| www.国产一区二区| 成人免费福利在线| 婷婷激情成人| 日韩激情在线播放| 狠狠色伊人亚洲综合网站色| 99热这里只有精品在线| 色综合老司机第九色激情| 国产色综合一区二区三区| 久久精品99国产| 亚洲国产日产av| 在线视频免费在线观看一区二区| 男人的天堂免费在线视频| 欧美日本在线| 影音先锋国产资源站| 日本一二区免费| 色天使在线视频| 精品粉嫩aⅴ一区二区三区四区| 亚洲精品一二三**| 国内精品伊人久久久久影院对白| 国产精品二区二区三区| 18禁网站免费无遮挡无码中文| 91成人福利在线| 欧美疯狂做受xxxx富婆| 久久久久久久久网站| 色视频线观看在线播放| 亚洲一区二区三区视频在线| 黄色片子在线观看| 欧美日韩调教| 亚洲综合五月天| 无码人妻aⅴ一区二区三区| 欧美亚州韩日在线看免费版国语版| 亚洲欧美另类小说| 丰满白嫩尤物一区二区| 亚洲最大的成人av| 欧美激情论坛| 亚洲成人动漫在线观看| 51精品国产人成在线观看| 欧美综合视频在线观看| 欧美激情日韩图片| 欧美久久精品一级黑人c片| 午夜激情久久久| 亚洲国产电影在线观看| 激情五月婷婷小说| 精品人妻一区二区三区麻豆91| 右手影院亚洲欧美| 亚洲欧美日韩一区在线观看| 成人午夜免费av| 成人性生交大片免费网站| 国产精品25p| 亚洲av无码国产精品麻豆天美| 婷婷丁香久久五月婷婷| 欧美少妇网站| 国产三区在线视频| 亚洲午夜电影在线| 国产精品69一区二区三区| 99在线免费视频观看| 欧美中文在线免费| 麻豆成人入口| 亚洲黄在线观看| 99精品国产99久久久久久97| 久久夜色精品亚洲噜噜国产mv| 综合久久亚洲| 欧美三级在线看| 国产一级特黄a高潮片| 亚洲成人av片| 国产精品久久在线观看|