最近在研究laravel-echo-server
其中在客戶端連接前, 客戶端會(huì)發(fā)送http協(xié)議的api請(qǐng)求sid,然后通過(guò)websocket連接到相同的地址。請(qǐng)問(wèn)workerman能夠做到一個(gè)端口多個(gè)協(xié)議嗎?要怎么實(shí)現(xiàn)?
在這里我找到了充電樁上行通信協(xié)議的問(wèn)題和文檔,但是作者只是在表示 單端口單協(xié)議 多進(jìn)程多端口
可以,比如同時(shí)支持http和websocket代碼類似
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
use Workerman\Worker;
use Workerman\Protocols\Websocket;
$worker = new Worker('http://0.0.0.0:1234');
$worker->onMessage = function (TcpConnection $connection, $request) {
if ($request instanceof Request) {
if ($request->header('upgrade') == 'websocket') {
$connection->protocol = Websocket::class;
Websocket::input($request, $connection);
return;
}
$connection->send('http');
return;
}
$connection->send('websocket');
};
Worker::runAll();