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

主頁 > 知識(shí)庫 > php實(shí)現(xiàn)socket推送技術(shù)的示例

php實(shí)現(xiàn)socket推送技術(shù)的示例

熱門標(biāo)簽:隨州銷售電銷機(jī)器人公司 網(wǎng)絡(luò)電話400申請(qǐng) 外呼系統(tǒng)人工客服 全國各省地圖標(biāo)注點(diǎn) 400電話申請(qǐng)辦理 百度地圖標(biāo)注類型是酒店 商丘外呼系統(tǒng)好處 福建高頻外呼防封系統(tǒng)哪家好 周口網(wǎng)絡(luò)回?fù)芡夂粝到y(tǒng)

在socket出現(xiàn)之前已經(jīng)有ajax定時(shí)請(qǐng)求、長輪詢等方案,但都不能滿足需求,socket就應(yīng)用而生了。

socket基本函數(shù)socket

總結(jié)下常用的socket函數(shù)

服務(wù)端: socket_create 創(chuàng)建socket設(shè)置基本參數(shù)

     socket_bind 綁定ip和端口號(hào)

     socket_listen 監(jiān)聽

     socket_accept 客戶端的連接

     socket_read 讀取客戶端的數(shù)據(jù)

     socket_write 給單獨(dú)客戶端發(fā)送數(shù)據(jù)

     socket_close 關(guān)閉連接

客戶端:socket_create 創(chuàng)建socket設(shè)置基本參數(shù)

     socket_connect 連接socket

     socket_write 給服務(wù)端發(fā)送數(shù)據(jù)

     socket_read 讀取服務(wù)端數(shù)據(jù)

     socket_close 關(guān)閉連接

H5websocket不多說了,上鏈接

OK,開始貼代碼~

----------------------------------------------------------分割線

服務(wù)端代碼:

?php
class WS {
 var $master;
 var $sockets = array();
 var $debug = false;//true為調(diào)試模式,輸出log日志
 var $handshake = array();
 function __construct($address, $port){
 $this->master=socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() failed");
 socket_set_option($this->master, SOL_SOCKET, SO_REUSEADDR, 1) or die("socket_option() failed");
 socket_bind($this->master, $address, $port)  or die("socket_bind() failed");
 socket_listen($this->master,20)  or die("socket_listen() failed");
 
 $this->sockets[] = $this->master;
 $this->say("Server Started : ".date('Y-m-d H:i:s'));
 $this->say("Listening on : ".$address." port ".$port);
 $this->say("Master socket : ".$this->master."\n");
 
 while(true){
 $socketArr = $this->sockets;
 $write = NULL;
 $except = NULL;
 socket_select($socketArr, $write, $except, NULL); //自動(dòng)選擇來消息的socket 如果是握手 自動(dòng)選擇主機(jī)
 foreach ($socketArr as $socket){
 if ($socket == $this->master){ //主機(jī)
  $client = socket_accept($this->master);
  if ($client  0){
  $this->log("socket_accept() failed");
  continue;
  } else{
  $this->connect($client);
  }
 } else {
  $bytes = @socket_recv($socket,$buffer,2048,0);
  if ($bytes == 0){
  $this->disConnect($socket);
  }
  else{
  $key = array_search($socket, $this->sockets);
  if (empty($this->handshake) || !isset($this->handshake[$key]) || !$this->handshake[$key]){
  $this->doHandShake($socket, $buffer, $key);
  }
  else{
  $buffer = $this->decode($buffer);
  echo $buffer.PHP_EOL;
  $key = array_search($socket, $this->sockets);
  $arr = $this->sockets;
  array_shift($arr);
  foreach ($arr as $s){
  $this->send($s, $buffer);
  }
  }
  }
 }
 }
 }
 }
 
 function send($client, $msg){
 $msg = $this->frame($msg);
 socket_write($client, $msg, strlen($msg));
 }
 function connect($socket){
 array_push($this->sockets, $socket);
 $this->say("\n" . $socket . " CONNECTED!");
 $this->say(date("Y-n-d H:i:s"));
 }
 function disConnect($socket){
 $index = array_search($socket, $this->sockets);
 socket_close($socket);
 $this->say($socket . " DISCONNECTED!");
 if ($index >= 0){
 echo 'unset index is:'.PHP_EOL;
 unset($this->sockets[$index]);
 }
 }
 function doHandShake($socket, $buffer, $handKey){
 $this->log("\nRequesting handshake...");
 $this->log($buffer);
 list($resource, $host, $origin, $key) = $this->getHeaders($buffer);
 $this->log("Handshaking...");
 $upgrade = "HTTP/1.1 101 Switching Protocol\r\n" .
  "Upgrade: websocket\r\n" .
  "Connection: Upgrade\r\n" .
  "Sec-WebSocket-Accept: " . $this->calcKey($key) . "\r\n\r\n"; //必須以兩個(gè)回車結(jié)尾
 $this->log($upgrade);
 $sent = socket_write($socket, $upgrade, strlen($upgrade));
 $this->handshake[$handKey]=true;
 $this->log("Done handshaking...");
 return true;
 }
 function getHeaders($req){
 $r = $h = $o = $key = null;
 if (preg_match("/GET (.*) HTTP/" ,$req,$match)) { $r = $match[1]; }
 if (preg_match("/Host: (.*)\r\n/" ,$req,$match)) { $h = $match[1]; }
 if (preg_match("/Origin: (.*)\r\n/" ,$req,$match)) { $o = $match[1]; }
 if (preg_match("/Sec-WebSocket-Key: (.*)\r\n/",$req,$match)) { $key = $match[1]; }
 return array($r, $h, $o, $key);
 }
 function calcKey($key){
 //基于websocket version 13
 $accept = base64_encode(sha1($key . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11', true));
 return $accept;
 }
 function decode($buffer) {
 $len = $masks = $data = $decoded = null;
 $len = ord($buffer[1])  127;
 if ($len === 126) {
 $masks = substr($buffer, 4, 4);
 $data = substr($buffer, 8);
 } 
 else if ($len === 127) {
 $masks = substr($buffer, 10, 4);
 $data = substr($buffer, 14);
 } 
 else {
 $masks = substr($buffer, 2, 4);
 $data = substr($buffer, 6);
 }
 for ($index = 0; $index  strlen($data); $index++) {
 $decoded .= $data[$index] ^ $masks[$index % 4];
 }
 return $decoded;
 }
 function frame($s){
 $a = str_split($s, 125);
 if (count($a) == 1){
 return "\x81" . chr(strlen($a[0])) . $a[0];
 }
 $ns = "";
 foreach ($a as $o){
 $ns .= "\x81" . chr(strlen($o)) . $o;
 }
 return $ns;
 }
 
 function say($msg = ""){
 echo $msg . "\n";
 }
 function log($msg = ""){
 if ($this->debug){
 echo $msg . "\n";
 } 
 }
}
 
new WS('localhost', 4000);

客戶端代碼(H5):

html>
 head>
 title>demo/title>
 script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js">/script>
 /head>
 body>
 input type="text" id="content">
 input type="button" value="send" id="send">
 script type="text/javascript">
  var ws = new WebSocket("ws://localhost:4000");
  ws.onopen = function(){
  console.log("握手成功");
  }
  ws.onmessage = function(e){
  console.log("message:" + e.data);
  }
  ws.onerror = function(){
  console.log("error");
  }
  $("#send").click(function(){
  content = $("#content").val();
  console.log(content);
  ws.send(content);
  })
 /script>
 /body>
/html>

然后執(zhí)行php demo.php 開啟socket(從運(yùn)維那偷學(xué)一招,linux下執(zhí)行nohup php demo.php 可以在后臺(tái)執(zhí)行),瀏覽器打開多個(gè)index.html,就能建立通訊了。

代碼解析:

1.屬性$sockets數(shù)組保存每個(gè)accept連接(不知道這么描述對(duì)不對(duì));

2.屬性$handshake數(shù)組保存連接是否在連接狀態(tài);

以上這篇php實(shí)現(xiàn)socket推送技術(shù)的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • php實(shí)現(xiàn)微信公眾號(hào)主動(dòng)推送消息
  • 微信小程序 消息推送php服務(wù)器驗(yàn)證實(shí)例詳解
  • 解析php做推送服務(wù)端實(shí)現(xiàn)ios消息推送
  • php ios推送(代碼)
  • php實(shí)現(xiàn)微信模板消息推送
  • PHP快速推送微信模板消息
  • php實(shí)現(xiàn)websocket實(shí)時(shí)消息推送
  • php redis實(shí)現(xiàn)對(duì)200w用戶的即時(shí)推送
  • PHP實(shí)現(xiàn)小程序批量通知推送

標(biāo)簽:南寧 樂山 六安 十堰 迪慶 佛山 海南 定西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php實(shí)現(xiàn)socket推送技術(shù)的示例》,本文關(guān)鍵詞  php,實(shí)現(xiàn),socket,推送,技術(shù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php實(shí)現(xiàn)socket推送技術(shù)的示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于php實(shí)現(xiàn)socket推送技術(shù)的示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    精品处破女学生| 最近中文字幕在线观看| 国产精品免费精品自在线观看| 丰满熟女一区二区三区| 欧美日韩一区二区三区不卡| 牛牛热在线视频| 一区二区视频免费在线观看| 深爱五月综合网| 免费男女羞羞的视频网站中文子暮| 91精品国产91久久久久青草| 久久国产精品免费观看| 99re这里只有精品在线| 2023国产精品| 99精品国产热久久91蜜凸| 久久久久麻豆v国产精华液好用吗| 欧美激情精品久久久久久免费印度| 欧美三级韩国三级日本三斤在线观看| 亚洲在线成人精品| 久久综合香蕉| 亚洲日韩第一页| 国产av不卡一区二区| 欧美成人精品激情在线观看| 午夜精品视频在线观看一区二区| 色综合视频在线观看| 国产精品视频第一区二区三区| 欧美精品一二三四区| 久久久久久久久久久99999| 欧美一区二区影视| 在线观看国产福利| 免费视频网站在线观看入口| 亚洲 欧美 日韩 在线| 亚洲精品国产精品国自产网站| 99视频在线播放| 成人嫩草影院| 欧美妇性猛交视频| 网站永久看片免费| 米奇在线777| 日本aⅴ写真网站免费| 欧洲美女7788成人免费视频| 国产成人免费视频网站视频社区| 欧美性受xxxx| 精品一区欧美| 丁香六月激情婷婷| 欧美亚洲另类久久综合| 色哟哟免费视频| 亚洲资源在线网| 欧美r级电影| 亚洲人成网站在线播| www.亚洲成人网| www.中文字幕在线观看| 亚洲国产精品人人做人人爽| 国产无遮挡裸体视频在线观看| 色网在线播放| 国产乱码久久久久久| 亚洲精品视频在线看| 亚洲精品视频99| 国产在线成人| 国产亚洲毛片在线| 欧美日韩激情视频| 国产欧美一区二区在线| 国产视频亚洲视频| 成人好色电影| 人人爽人人爽人人片| 美女写真久久影院| 一级黄色片国产| 久久久精品天堂| 欧美男人的天堂| 妺妺窝人体色www聚色窝仙踪| 精品人妻伦一二三区久| 亚洲精品狠狠操| wwwwwxxxx日本| 亚洲精品乱码久久久久久黑人| 蜜桃视频一区| 麻豆精品视频入口| 美女露出粉嫩尿囗让男人桶| 日本天码aⅴ片在线电影网站| 欧美日韩午夜电影网| 黄色美女视频在线观看| 蜜桃久久精品成人无码av| 在线成人超碰| 亚洲夜晚福利在线观看| 久久99久久亚洲国产| 精品女同一区二区三区在线播放| 在线观看欧美日韩| 曰本人一级毛片免费完整视频| 久久久久9999亚洲精品| 亚洲综合av网| 一区二区三区四区五区视频在线观看| 裸体免费网站| 欧美疯狂性受xxxxx另类| 真实国产乱子伦精品一区二区三区| 久久综合久久综合亚洲| 成年网站在线观看视频| 亚洲成人av一区二区三区| 欧美男男tv网站在线播放| 亚洲精品中文字幕乱码无线| 日本视频二区| 凹凸国产熟女精品视频| 亚洲综合网狠久久| 三级外国片在线观看视频| av网站免费大全| www.亚洲国产| 91丨九色porny丨蝌蚪| 亚洲高清免费在线观看| 麻豆影视在线观看_| 久久影院资源网| 天天色综合久久| 成视频免费观看在线看| 国产精品自拍在线观看| 美女搞黄视频在线观看| 国产喷水福利在线视频| 蜜臀91精品国产高清在线观看| 1024国产在线| 欧美吞精做爰啪啪高潮| 99re国产精品| 91丨porny丨蝌蚪视频| 国产美女精品视频免费观看| 538prom精品视频线放| 国产精品成人国产| www.浪潮av.com| 欧美黑人双插| 国产乱子伦三级在线播放| 成年女人a毛片免费视频| 亚洲欧美卡通另类91av| 国产伦精品一区二区三区四区视频| 亚洲字幕成人中文在线观看| yellow网站在线观看| 日本韩国精品一区二区在线观看| 亚洲国产日韩一区无码精品久久久| jizz大全欧美jizzcom| 成人性生交大片免费看视频在线| 日韩av电影在线网| 成a人片在线观看www视频| 五月久久久综合一区二区小说| 欧美性猛交xxxx乱大交退制版| 国产精品永久免费观看| 久久精品66| 国产成人精品免高潮在线观看| 在线观看免费视频高清游戏推荐| 九一免费看片| 99国产精品久久| 国产在线麻豆精品| 午夜欧美在线一二页| 91精产国品一二三| 88xx成人网| 先锋影音久久久| 性做久久久久久久| 精品欧美国产一区二区三区不卡| 国产剧情一区二区在线观看| www.久久.com| 免费97视频在线精品国自产拍| 人妻丰满熟妇aⅴ无码| 九九国产精品视频| 欧美日韩国产91| 一区二区电影| 国内外激情在线| 亚洲欧美激情精品一区二区| 人人澡人一摸人人添| 欧美少妇一区二区三区| 日本一区二区三区免费乱视频| 亚洲一区二区三区日韩| 国产精品嫩草影院俄罗斯| 亚洲午夜精品久久久久久浪潮| 国产人妻精品一区二区三区不卡| 一个人看的日本www的免费视频| 欧美色精品天天在线观看视频| 亚洲成色最大综合在线| 亚洲欧洲日本mm| 久久久亚洲综合网站| 日韩国产91| 69成人在线| 欧美成人在线免费视频| 欧美在线va视频| 午夜3点看的视频| 91深夜福利视频| 综合中文字幕| www.97视频| 亚洲成人福利在线观看| 亚洲欧洲精品一区| 综合伊思人在钱三区| 国产精品一区二区三区免费视频| 先锋影音欧美官网| 亚洲午夜网未来影院| 国产精品免费观看| 一区一区视频| 色一情一乱一伦一区二区三欧美| 日韩a∨精品日韩在线观看| 欧美激情videos| 国产精品秘入口18禁麻豆免会员| 日韩在线观看视频一区二区三区| 欧美亚洲伦理www| 大地资源网在线观看免费官网| 九九热这里只有在线精品视| 欧美视频免费| 黑人狂躁日本妞一区二区三区| 久久人人爽爽人人爽人人片av| 成人精品美女隐私视频| 国产精品18久久久久网站| 欧美一级成年大片在线观看| 中文字幕第一页在线播放| 欧美性猛交 xxxx| 老司机免费视频一区二区三区| 国产精品久久久久9999爆乳| 男女视频一区二区三区| 99久久精品免费精品国产| 婷婷亚洲五月色综合| 日韩电影网1区2区| 日韩中文字幕免费看| 精品三级在线| 国产在线精品一区二区中文| 日韩欧美电影一区二区| 亚洲精品国产精品国自产网站| 怡红院怡春院首页| 日韩欧美激情一区二区| 欧美伦理视频在线观看| 精品国产一区二区三区四区| 欧美激情在线视频二区| 中文字幕99页| 国产精品系列在线| 欧美日韩在线一区二区| 欧美图片激情小说| 五月婷婷综合在线观看| 久草国产在线视频| 亚洲欧美国产另类| 久久久9色精品国产一区二区三区| 九九热精品视频在线观看| 亚洲天堂777| 嫩草视频免费在线观看| 一区二区日韩| 希岛爱理av免费一区二区| 正在播放木下凛凛xv99| 美女扒开腿免费视频| 国产精品二区不卡| 在线观看av大片| 久久无码专区国产精品s| 久久久久久国产精品视频| 亚洲欧美日韩色图| 黄大色黄女片18免费| 日韩一区二区三区高清| 色av吧综合网| 91极品女神私人尤物在线播放| 国产精品久久久久不卡| 偷拍视频一区二区| 亚洲制服中文字幕| 91日本在线视频| 精品一区二区亚洲| 国产精品久久午夜| 亚洲精品99久久久久| 欧美激情欧美狂野欧美精品| 亚洲婷婷在线观看| 97在线精品国自产拍中文| 在线视频综合导航| 青青草成人在线观看| 老太脱裤让老头玩ⅹxxxx| 欧美激情国产精品| 亚洲精品7777xxxx青睐| 亚洲国产欧美91| 精品五月天堂| 成人免费av资源| 国产伦精品一区三区精东| 亚洲精品免费一二三区| 91免费观看国产| 91精品国产综合久久久久久久久久| 久久久久狠狠高潮亚洲精品| 国产精品久久久久aaaa| 亚洲熟女乱色一区二区三区久久久| 成人黄色电影网址| 日p在线观看| 成人亚洲免费视频| 日韩欧美视频在线播放| 国产一区二区日韩精品| 中文字幕制服丝袜成人av| 91免费版在线看| 久久精品72免费观看| 精品精品国产毛片在线看| 嫩草嫩草嫩草嫩草嫩草| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美午夜激情视频| 国产一区二区久久久久| 国产精品久久久久久久久粉嫩av| 日本激情视频在线播放| 一区二区三区国产| 久久人人88| 日韩欧美成人区| 99久久精品免费看国产四区| 久久人人爽爽人人爽人人片av| 国产精品九九久久久久久久| 国产成年人免费视频| 亚洲视频狠狠干| 欧美高清激情视频| 日本大片在线观看| 男人的天堂免费在线视频| 成人性色av| 精品在线视频一区二区三区| 视频一区二区在线观看| 欧美一区二视频在线免费观看| 成人影片在线播放| 五月婷婷视频在线观看| 欧洲一区二区三区免费视频| 久久精品国产99| 一区二区在线观看视频| 欧美狂野激情性xxxx在线观| 中文字幕一区二区三| 精品黑人一区二区三区观看时间| 国产精品香蕉在线观看| 国产一区二区波多野结衣| 国产高潮国产高潮久久久91| 成人c视频免费高清在线观看| 欧美jizzhd精品欧美另类| 亚洲影视在线播放| 国产馆手机在线观看| 成人在线免费观看视视频| 国产又爽又黄免费软件| 国产chinese精品一区二区| 色狠狠色噜噜噜综合网| 天天干天天操天天爽| 麻豆国产传媒av福利| 偷拍视频一区二区三区| 1024视频在线| 中国女人内谢69xxxx免费视频| 91精品论坛| 国产激情在线观看| 香蕉视频在线免费看| 在线免费观看av影视天堂| 日韩av网站免费在线| 三上悠亚ssⅰn939无码播放| 日本一区二区三区电影免费观看| 91福利入口|