国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

websocket tcpsocket 區(qū)別

sbjwwjsm

我用原始php寫了 tcpSocket 。用tcpClient 能連接,websocket也能連接。那workerman里者兩種server區(qū)別在哪里?

6056 6 0
6個(gè)回答

walkor 打賞

websocket 是一種通訊協(xié)議,類似http ftp smtp這些都是屬于通訊協(xié)議。

不管websocket http ftp smtp 等這些應(yīng)用層通訊協(xié)議都是基于tcp傳輸層協(xié)議的。

  • 暫無評(píng)論
sbjwwjsm
<?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)聽

  • 暫無評(píng)論
sbjwwjsm

加上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          
  • 暫無評(píng)論
walkor 打賞

不要提前運(yùn)行 Worker::runAll();

  • 暫無評(píng)論
sbjwwjsm

<?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

  • 暫無評(píng)論
walkor 打賞

不要直接運(yùn)行 Worker::runAll();
運(yùn)行 Worker::runAll(); 后后面的代碼就不會(huì)運(yùn)行了,也就是其它端口的監(jiān)聽代碼執(zhí)行不到。

Worker::runAll(); 去掉
或者像例子那樣改成
if(!defined('GLOBAL_START'))
{
Worker::runAll();
}

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表回答
??