Mojo::Transaction::WebSocket-WebSocket事务
使用Mojo::事务::WebSocket;#发送和接收WebSocket消息my$ws=Mojo::Transaction::WebSocket->new;$ws->send(“你好,世界!”);$ws->on(消息=>sub($ws,$msg){say“message:$msg”});$ws->on(finish=>sub($ws,$code,$reason){say“WebSocket closed with status$code”});
Mojo::Transaction::WebSocket是WebSocket事务的容器,基于副本请求6455和副本请求7692.
Mojo::Transaction::WebSocket从继承所有事件Mojo::事务并且可以发射出以下新的气体。
$ws->on(二进制=>sub($ws,$bytes){…});
收到完整的WebSocket二进制消息时发出。
$ws->on(binary=>sub($ws,$bytes){说“binary:$字节”});
$ws->on(drain=>sub($ws){…});
发送所有数据后发出。
$ws->on(排水=>sub($ws){$ws->发送(时间)});
$ws->on(finish=>sub($ws,$code,$reason){…});
WebSocket连接关闭时发出。
上的$ws->(帧=>子($ws,$frame){…});
收到WebSocket帧时发出。
$ws->打开(帧=>子($ws,$frame){说“FIN:$frame->[0]”;说“RSV1:$frame->[1]”;说“RSV2:$frame->[2]”;说“RSV3:$frame->[3]”;说“操作码:$frame->[4]”;说“有效载荷:$frame->[5]”;});
$ws->on(json=>sub($ws,$json){…});
当收到完整的WebSocket消息时发出,所有文本和二进制消息将自动进行JSON解码。请注意,只有当该事件至少有一个订阅者时,才会发出该事件。
$ws->on(json=>sub($ws,$hash){say“Message:$hash->{msg}”});
$ws->on(message=>sub($ws,$msg){…});
当收到完整的WebSocket消息时发出,文本消息将自动解码。请注意,此事件仅在至少有一个订户时发出。
$ws->on(message=>sub($ws,$msg){说“message:$msg”});
$tx->打开(简历=>sub($tx){…});
恢复事务时发出。
$ws->on(text=>sub($ws,$bytes){…});
收到完整的WebSocket文本消息时发出。
$ws->on(text=>sub($ws,$bytes){说“text:$bytes”});
Mojo::Transaction::WebSocket继承所有属性Mojo::事务并实现了以下新功能。
我的$bool=$ws->已压缩;$ws=$ws->压缩($bool);
使用压缩邮件永久消息泄漏
扩展。
我的$bool=$ws->已建立;$ws=$ws->已建立($bool);
WebSocket连接已建立。
我的$握手=$ws->握手;$ws=$ws->握手(Mojo::Transaction::HTTP->new);
原始握手事务,通常是Mojo::Transaction::HTTP对象。
我的$bool=$ws->masked;$ws=$ws->屏蔽($bool);
使用异或密码和随机32位密钥屏蔽传出帧。
我的$size=$ws->max_websocket_size;$ws=$ws->max_websocket_size(1024);
最大WebSocket消息大小(以字节为单位),默认为MOJO_MAX_WEBSOCKET_尺寸
环境变量或262144
(256KiB)。
Mojo::Transaction::WebSocket从继承所有方法Mojo::事务并实现了以下新功能。
我的$frame=$ws->buildmessage({binary=>$bytes});我的$frame=$ws->build_message({text=>$bytes});我的$frame=$ws->buildmessage({json=>{test=>[1,2,3]}});我的$frame=$ws->build_message($chars);
生成WebSocket消息。
$ws->client_read($data);
读取数据客户端,用于实现用户代理,例如Mojo::用户代理.
my$bytes=$ws->client_write;
写入数据客户端,用于实现用户代理,例如Mojo::用户代理.
$tx=$tx->已关闭;
等同于Mojo::Transaction中的“已完成”,但也指示已发送所有事务数据。
我的$id=$ws->连接;
连接标识符。
$ws=$ws->完成;$ws=$ws->完成(1000);$ws=$ws->finish(1003=>“无法接受数据!”);
正常关闭WebSocket连接。
我的$bool=$ws->iswebsocket;
没错,这是一个Mojo::Transaction::WebSocket对象。
我的$bool=$ws->kept_alive;
连接已保持活动状态。
我的$地址=$ws->local_address;
本地接口地址。
我的$port=$ws->local_port;
本地接口端口。
$ws->parse_message([$fin,$rsv1,$rsv2,$rsv3,$op,$payload]);
分析WebSocket消息。
我的$proto=$ws->协议;
退回协商的子协议或未定义
.
我的$地址=$ws->remote_address;
远程接口地址。
我的$port=$ws->remote_port;
远程接口端口。
我的$req=$ws->req;
握手请求,通常是Mojo::消息::请求对象。
我的$res=$ws->res;
握手回应,通常是Mojo::消息::响应对象。
$ws=$ws->恢复;
简历“握手”交易。
$ws=$ws->send({binary=>$bytes});$ws=$ws->send({text=>$bytes});$ws=$ws->send({json=>{test=>[1,2,3]});$ws=$ws->send([$fin,$rsv1,$rsv2,$rsv3,$op,$payload]);$ws=$ws->发送($chars);$ws=$ws->send($chars=>sub{…});
通过WebSocket非阻塞地发送消息或帧,写入所有数据后将执行可选的排出回调。
#发送“Ping”帧使用Mojo::WebSocket qw(WS_PING);$ws->send([1,0,0,0,ws_PING,'Hello World!']);
$ws->server_read($data);
读取数据服务器端,用于实现web服务器,如Mojo::服务器::守护进程.
my$bytes=$ws->server_write;
写入数据服务器端,用于实现web服务器,如Mojo::服务器::守护进程.
$ws->with_compression;
谈判永久消息泄漏
此WebSocket连接的扩展。
my$proto=$ws->with_procols('v2.proto','v1.proto');
协商此WebSocket连接的子协议。
Mojolicious公司,Mojolicious::指南,https://mojolicious.org.