執行方法:
首先先修改server.php與index.html的ip
通過命令列執行 [php路徑]\php.exe "[檔案路徑]\server.php"
然後通過瀏覽器開啟index.html
server.php
<?php include 'websocket.class.php';
$config=array(
'address'=>'192.168.0.200',
'port'=>'8000',
'event'=>'wsevent',//**函式的函式名
'log'=>true,
);$websocket = new websocket($config);
$websocket->run();
function wsevent($type,$event)elseif('out'==$type)elseif('msg'==$type)
}function roboot($sign,$t)
$websocket->write($sign,'robot:'.$show);
}?>
index.html
websocket_test
程式設計客棧button" value="斷開" onclick="dis()">
websocket.class.php
<?php /*
建立類websocket($config);
$config結構:
$config=array(
'address'=>'192.168.0.200',//繫結位址
'port'=>'8000',//繫結埠
'event'=>'wsevent',//**函式的函式名
'log'=>true,//命令列顯示記錄
);**函式返回資料格式
function wsevent($type,$event)
$type字串 事件型別有以下三種
in 客戶端進入
out 客戶端斷開
msg 客戶端訊息到達
均為小寫
$event 陣列
$event['k']內建使用者列表的userid;
$event['sign']客戶標示
$event['msg']收到的訊息 $type='msg'時才有該資訊
方法:run()執行
search(標示)遍歷取得該標示的id
close(標示)斷開連線
write(標示,資訊)推送資訊
idwrite(id,資訊)推送資訊
屬性:$users 客戶列表
結構:$users=array(
[使用者id]=>array('socket'=>[標示],'hand'=[是否握手-布林值]),
[使用者id]=>arr.....)*/
class websocket
error_reporting(e_all);
set_time_limit(0);
ob_implicit_flush();
$this->event = $config['event'];
$this->log = $config['log'];
$this->master=$this->websocket($config['address'], $config['port']);
$this->sockets=array('s'=>$this->master);
} function websocket($address,$port)
function run()else
if(!$this->users[$k]['hand'])else}}
} }function search($sign)
return false;
} function close($sign)
function handshake($k,$buffer)
function uncode($str)) === 8) else if (hexdec($head) === 1)
} return $data;
} function code($msg)
function ord_hex($data) //沒有這個標示
$t=$this->code($t);
return socket_write($this->users[$id]['socket'],$t,strlen($t));
} function write($k,$t)
function eventoutput($type,$event)
function log($t)
}}
Autobahn實現WebSocket通訊
最近開發中需要通過ws協議通訊,於是做了些功課,現在websocket用的比較多的就是autobahn,由於使用方便所以選擇了它。然後就是使用websocketconnection這個類,使用方法直接上 吧mconnect.connect wsurl,new websockethandler ove...
WebSocket實現原理
websocket同http和https一樣,屬於tcp基礎上的應用層的協議 因此其必然也是存在三次握手四次揮手的過程 一般來說,我們使用的http協議只能由客戶端發起請求,而服務端無法直接主動進行資料推送,這就導致了如果服務端有持續的變化 如聊天室 而客戶端獲取起來較為複雜 如實時性和服務端壓力等...
php使用websocket示例詳解
url 下面我畫了乙個圖演示 client 和 server 之間建立 websocket 連線時握手部分,這個部分在 node 中可以十分輕鬆的完成,因為 node 提供的 net 模組已經對 socket 套接字做了封裝處理,開發者使用的時候只需要考慮資料的互動而不用處理連線的建立。而 php ...