我用原始php寫了 tcpSocket 。用tcpClient 能連接,websocket也能連接。那workerman里者兩種server區(qū)別在哪里?
<?php
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
// websocket服務(wù)端
$ws = new Worker('websocket://0.0.0.0:4236');
$ws->onConnect = function($connection)
{
$connection->onWebSocketConnect = function($connection , $http_header)
{
// 可以在這里判斷連接來源是否合法,不合法就關(guān)掉連接
// $_SERVER標(biāo)識(shí)來自哪個(gè)站點(diǎn)的頁面發(fā)起的websocket鏈接
if($_SERVER != 'http://chat.workerman.net')
{
$connection->close();
}
// onWebSocketConnect 里面$_GET $_SERVER是可用的
// var_dump($_GET, $_SERVER);
};
};
Worker::runAll();
開啟websocket后 netstat -anp|grep 4236 看不到監(jiān)聽 。 ps aux|grep php 可以看到進(jìn)程
開啟tcp后 netstat -anp|grep 4236 就看得到監(jiān)聽
加上worker = new Worker("websocket://0.0.0.0:8005");就這樣
Workerman start in DEBUG mode
Master socket : Resource id #19
沒有就
Workerman start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.3.6 PHP version:5.5.36
------------------------ WORKERS -------------------------------
user worker listen processes status
root none tcp://0.0.0.0:8000 4
root none http://0.0.0.0:8005 1
<?php
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
Worker::$daemonize = true;
$ws_worker = new Worker("tcp://0.0.0.0:8000");
$wd_worker = new Worker("http://0.0.0.0:8005");
$ww_worker = new Worker("websocket://0.0.0.0:8081");
//啟動(dòng)4個(gè)進(jìn)程對(duì)外提供服務(wù)
//當(dāng)接收到客戶端發(fā)來的數(shù)據(jù)后顯示數(shù)據(jù)并回發(fā)到客戶端
$ws_worker->onMessage = function($connection, $data) {
//顯示數(shù)據(jù)
echo "you just received: $data\n";
//向客戶端回發(fā)數(shù)據(jù)
$connection->send("you just send: $data");
};
//運(yùn)行worker
Worker::runAll();
?>
還是Master socket : Resource id #19