您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman类TcpConnection的maxPackageSize属性(最大接收包大小)
发布时间:2021-12-03 21:55:00编辑:雪饮阅读()
maxPackageSize
说明:
static int Connection::$defaultMaxPackageSize
此属性为全局静态属性,用来设置每个连接能够接收的最大包包长。不设置默认为10MB。
如果发来的数据包解析(协议类的input方法返回值)得到包长大于Connection::$defaultMaxPackageSize,则会视为非法数据,连接会断开。
1024字节最大接收包大小测试:
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// 设置每个连接接收的数据包最大为1024字节
TcpConnection::$defaultMaxPackageSize = 1024;
$str_length=0;
$worker = new Worker('websocket://0.0.0.0:8484');
$worker->onMessage = function(TcpConnection $connection, $data)
{
global $str_length;
$str_length=strlen($data);
$connection->send('hello');
};
$worker->onClose=function(){
global $str_length;
echo "\r\n";
var_dump("str_length:".$str_length);
echo "\r\n";
};
// 运行worker
Worker::runAll();
?>
实例运行并有websocket连接:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
Workerman[test.php] start in DEBUG mode
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
-------------------------------------------- WORKERS ---------------------------------------------
proto user worker listen processes status
tcp root none websocket://0.0.0.0:8484 1 [OK]
--------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
string(13) "str_length:31"
客户端:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="https://www.w3school.com.cn/jquery/jquery-1.11.1.min.js"></script>
<script type="">
$(document).ready(function(){
var ws = new WebSocket("ws://47.240.19.5:8484");
ws.onopen = function(){
var message="";
for(var i=0;i<100;i++){
message+=i.toString();
}
ws.send();
}
ws.onmessage = function(e){
console.log("接收到的数据:");
console.log(e.data);
}
ws.onclose = function(e){
}
ws.onerror = function(e){
}
});
</script>
</head>
<body>
</body>
</html>
接收消息包过大,直接丢包。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="https://www.w3school.com.cn/jquery/jquery-1.11.1.min.js"></script>
<script type="">
$(document).ready(function(){
var ws = new WebSocket("ws://47.240.19.5:8484");
ws.onopen = function(){
var message="";
for(var i=0;i<10000;i++){
message+=i.toString();
}
ws.send(message);
}
ws.onmessage = function(e){
console.log("接收到的数据:");
console.log(e.data);
}
ws.onclose = function(e){
}
ws.onerror = function(e){
}
});
</script>
</head>
<body>
</body>
</html>
当有客户端websocket连接时:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
Workerman[test.php] start in DEBUG mode
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
-------------------------------------------- WORKERS ---------------------------------------------
proto user worker listen processes status
tcp root none websocket://0.0.0.0:8484 1 [OK]
--------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
error package. package_length=38898
string(12) "str_length:0"
客户端包足够过载:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="https://www.w3school.com.cn/jquery/jquery-1.11.1.min.js"></script>
<script type="">
$(document).ready(function(){
var ws = new WebSocket("ws://47.240.19.5:8484");
ws.onopen = function(){
var message="";
for(var i=0;i<10000;i++){
message+=i.toString();
}
ws.send(message);
}
ws.onmessage = function(e){
console.log("接收到的数据:");
console.log(e.data);
}
ws.onclose = function(e){
}
ws.onerror = function(e){
}
});
</script>
</head>
<body>
</body>
</html>
关键字词:workerman,TcpConnection,maxPackageSize
相关文章
- workerman类TcpConnection的defaultMaxSendBufferSize
- workerman类AsyncTcpConnection的__construct方法实现
- workerman类AsyncTcpConnection的__construct方法实现
- workerman接口listen实现内外部通信(管理后台或系统向w
- php或workerman利用posix_getpid函数获取进程id
- workerman回调onBufferFull(缓冲区溢出)
- workerman回调onBufferFull默认缓冲区大小配置
- workerman回调onClose
- workerman回调onConnect获取远端ip
- workerman回调onMessage