模块:莫霍::交易::WebSocket
起源:Mojo::事务

名称

Mojo::Transaction::WebSocket-WebSocket事务

简介

使用Mojo::Transaction::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(drain=>sub($ws){$ws->send(time)});

完成

$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->(消息=>sub($ws,$msg){…});

当收到完整的WebSocket消息时发出,文本消息将自动解码。请注意,此事件仅在至少有一个订户时发出。

$ws->on(消息=>sub($ws,$msg){say“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::事务并实现了以下新功能。

构建消息

my$frame=$ws->build_message({binary=>$bytes});我的$frame=$ws->buildmessage({text=>$bytes});我的$frame=$ws->buildmessage({json=>{test=>[1,2,3]}});我的$frame=$ws->build_message($chars);

生成WebSocket消息。

客户端(_R)

$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连接。

is_websocket

我的$bool=$ws->iswebsocket;

没错,这是一个Mojo::事务::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,'你好,世界!']);

服务器_读取

$ws->server_read($data);

读取数据服务器端,用于实现web服务器,如Mojo::服务器::守护进程.

服务器写入

my$bytes=$ws->server_write;

写入数据服务器端,用于实现web服务器,如Mojo::服务器::守护进程.

带压缩(_C)

$ws->with_compression;

谈判永久消息泄漏此WebSocket连接的扩展。

有协议(_P)

我的$proto=$ws->with_protocols('v2.proto','v1.proto');

协商此WebSocket连接的子协议。

另请参阅

莫乔利奇,Mojolicious::指南,https://mojolicious.org.