swoole-1.8.0新增了對多端口混合協(xié)議的支持。Server可以監(jiān)聽多個端口,每個端口都可以設(shè)置不同的協(xié)議處理方式(set)和回調(diào)函數(shù)(on)。SSL/TLS傳輸加密也可以只對特定的端口啟用。? ? ? ? ? ?(推薦學(xué)習(xí): swoole視頻教程)
未調(diào)用set方法,設(shè)置協(xié)議處理選項的監(jiān)聽端口,默認(rèn)繼承主服務(wù)器的設(shè)置
未調(diào)用on方法,設(shè)置回調(diào)函數(shù)的監(jiān)聽端口,默認(rèn)使用主服務(wù)器的回調(diào)函數(shù)
監(jiān)聽端口返回的對象類型為swoole_server_port
監(jiān)聽端口的swoole_server_port對象,可以調(diào)用set和on方法,使用方法與swoole_server完全一致
監(jiān)聽端口只能設(shè)置少量特定的選項,只能設(shè)置數(shù)據(jù)收發(fā)的相關(guān)事件回調(diào)函數(shù)
不同監(jiān)聽端口的回調(diào)函數(shù),仍然是相同的Worker進(jìn)程空間內(nèi)執(zhí)行
主服務(wù)器是WebSocket或Http協(xié)議,新監(jiān)聽的TCP端口默認(rèn)會繼承主Server的協(xié)議設(shè)置。必須單獨(dú)調(diào)用set方法設(shè)置新的協(xié)議才會啟用新協(xié)議
監(jiān)聽新端口
$port1?=?$server->listen("127.0.0.1",?9501,?SWOOLE_SOCK_TCP); $port2?=?$server->listen("127.0.0.1",?9502,?SWOOLE_SOCK_UDP); $port3?=?$server->listen("127.0.0.1",?9503,?SWOOLE_SOCK_TCP?|?SWOOLE_SSL);
設(shè)置網(wǎng)絡(luò)協(xié)議
$port1->set([ ????'open_length_check'?=>?true, ????'package_length_type'?=>?'N', ????'package_length_offset'?=>?0, ????'package_max_length'?=>?800000,] ); $port3->set([ ????'open_eof_split'?=>?true, ????'package_eof'?=>?"rn", ????'ssl_cert_file'?=>?'ssl.cert', ????'ssl_key_file'?=>?'ssl.key',] );