view release on metacpan or search on metacpan
examples/chat/js/beekeeper.js view on Meta::CPAN
// It is possible to iterate over a list of servers specifying:
// url: [{ host: 'localhost', port: 1883 }, ... ]
// Connect to MQTT broker using websockets
this.mqtt = mqtt.connect( args.url, {
username: args.username || 'guest',
password: args.password || 'guest',
clientId: this.client_id,
protocolVersion: 5,
clean: true,
keepalive: 60,
reconnectPeriod: 1000,
connectTimeout: 30 * 1000
});
this.mqtt.on('connect', function (connack) {
This.host = This.mqtt.options.host;
This._debug("Connected to MQTT broker at " + This.host);
This._create_response_topic();
if (args.on_connect) args.on_connect(connack.properties);
});
examples/dashboard/js/dashboard.js view on Meta::CPAN
// It is possible to iterate over a list of servers specifying:
// url: [{ host: 'localhost', port: 1883 }, ... ]
// Connect to MQTT broker using websockets
this.mqtt = mqtt.connect( args.url, {
username: args.username || 'guest',
password: args.password || 'guest',
clientId: this.client_id,
protocolVersion: 5,
clean: true,
keepalive: 60,
reconnectPeriod: 1000,
connectTimeout: 30 * 1000
});
this.mqtt.on('connect', function (connack) {
This.host = This.mqtt.options.host;
This._debug("Connected to MQTT broker at " + This.host);
This._create_response_topic();
if (args.on_connect) args.on_connect(connack.properties);
});
examples/websocket/js/beekeeper.js view on Meta::CPAN
// It is possible to iterate over a list of servers specifying:
// url: [{ host: 'localhost', port: 1883 }, ... ]
// Connect to MQTT broker using websockets
this.mqtt = mqtt.connect( args.url, {
username: args.username || 'guest',
password: args.password || 'guest',
clientId: this.client_id,
protocolVersion: 5,
clean: true,
keepalive: 60,
reconnectPeriod: 1000,
connectTimeout: 30 * 1000
});
this.mqtt.on('connect', function (connack) {
This.host = This.mqtt.options.host;
This._debug("Connected to MQTT broker at " + This.host);
This._create_response_topic();
if (args.on_connect) args.on_connect(connack.properties);
});
lib/Beekeeper/MQTT.pm view on Meta::CPAN
my $host = shift @$try_hosts;
my $tls = $config->{'tls'} || 0;
my $port = $config->{'port'} || ( $tls ? 8883 : 1883 );
($host) = ($host =~ m/^([a-zA-Z0-9\-\.]+)$/s); # untaint
($port) = ($port =~ m/^([0-9]+)$/s);
$self->{handle} = AnyEvent::Handle->new(
connect => [ $host, $port ],
tls => $tls ? 'connect' : undef,
keepalive => 1,
no_delay => 1,
on_connect => sub {
my ($fh, $host, $port) = @_;
# Send CONNECT packet
$self->{server_prop}->{host} = $host;
$self->{server_prop}->{port} = $port;
$self->_send_connect;
},
on_connect_error => sub {
my ($fh, $errmsg) = @_;
lib/Beekeeper/MQTT.pm view on Meta::CPAN
sub _send_connect {
my ($self) = @_;
my %prop = %{$self->{config}};
my $username = delete $prop{'username'};
my $password = delete $prop{'password'};
my $client_id = delete $prop{'client_id'};
my $clean_start = delete $prop{'clean_start'};
my $keep_alive = delete $prop{'keep_alive'};
my $will = delete $prop{'will'};
unless ($client_id) {
$client_id = '';
$client_id .= ('0'..'9','a'..'z','A'..'Z')[rand 62] for (1..22);
}
$self->{client_id} = $client_id;
lib/Beekeeper/MQTT.pm view on Meta::CPAN
if ($will) {
$flags |= 0x04; # 3.1.2.5 Will Flag
$flags |= $will->{'qos'} << 3; # 3.1.2.6 Will QoS
$flags |= 0x20 if $will->{'retain'}; # 3.1.2.7 Will Retain
}
$raw_mqtt .= pack("C", $flags);
# 3.1.2.10 Keep Alive (short int)
$raw_mqtt .= pack("n", $keep_alive || 0);
# 3.1.2.11 Properties
$raw_mqtt .= _encode_var_int(length $raw_prop);
$raw_mqtt .= $raw_prop;
# 3.1.3 Payload
# 3.1.3.1 Client Identifier (utf8 string)
$raw_mqtt .= pack("n/a*", $client_id);
lib/Beekeeper/MQTT.pm view on Meta::CPAN
elsif ($prop_id == MQTT_SUBSCRIPTION_IDENTIFIER_AVAILABLE) {
# 3.2.2.3.12 Subscription Identifiers Available (byte)
$prop->{'subscription_identifier_available'} = _decode_byte($packet, \$offs);
}
elsif ($prop_id == MQTT_SHARED_SUBSCRIPTION_AVAILABLE) {
# 3.2.2.3.13 Shared Subscription Available (byte)
$prop->{'shared_subscription_available'} = _decode_byte($packet, \$offs);
}
elsif ($prop_id == MQTT_SERVER_KEEP_ALIVE) {
# 3.2.2.3.14 Server Keep Alive (short int)
$prop->{'server_keep_alive'} = _decode_int_16($packet, \$offs);
}
elsif ($prop_id == MQTT_RESPONSE_INFORMATION) {
# 3.2.2.3.15 Response Information (utf8 string)
$prop->{'response_information'} = _decode_utf8_str($packet, \$offs);
}
elsif ($prop_id == MQTT_SERVER_REFERENCE) {
# 3.2.2.3.16 Server Reference (utf8 string)
$prop->{'server_reference'} = _decode_utf8_str($packet, \$offs);
}
elsif ($prop_id == MQTT_AUTHENTICATION_METHOD) {
lib/Beekeeper/Service/ToyBroker/Worker.pm view on Meta::CPAN
my $rbuff_len;
my $packet_len;
my $mult;
my $offs;
my $byte;
my $fh; $fh = AnyEvent::Handle->new(
fh => $FH,
keepalive => 1,
no_delay => 1,
on_read => sub {
PARSE_PACKET: {
$rbuff_len = length $fh->{rbuf};
return unless $rbuff_len >= 2;
unless ($packet_type) {
lib/Beekeeper/Service/ToyBroker/Worker.pm view on Meta::CPAN
# 3.1.2.3 Connect Flags (byte)
my $flags = _decode_byte($packet, \$offs);
$prop{'clean_start'} = 1 if $flags & 0x02; # 3.1.2.4 Clean Start
$prop{'username'} = 1 if $flags & 0x80; # 3.1.2.8 User Name Flag
$prop{'password'} = 1 if $flags & 0x40; # 3.1.2.9 Password Flag
$prop{'will_flag'} = 1 if $flags & 0x04; # 3.1.2.5 Will Flag
$prop{'will_qos'} = ($flags & 0x18) >> 3; # 3.1.2.6 Will QoS
$prop{'will_retain'} = 1 if $flags & 0x20; # 3.1.2.7 Will Retain
# 3.1.2.10 Keep Alive (short int)
$prop{'keep_alive'} = _decode_int_16($packet, \$offs);
# 3.1.2.11.1 Properties Length (variable length int)
my $prop_len = _decode_var_int($packet, \$offs);
my $prop_end = $offs + $prop_len;
while ($offs < $prop_end) {
my $prop_id = _decode_byte($packet, \$offs);
if ($prop_id == MQTT_SESSION_EXPIRY_INTERVAL) {
lib/Beekeeper/Service/ToyBroker/Worker.pm view on Meta::CPAN
if (exists $args{'subscription_identifier_available'}) {
# 3.2.2.3.12 Subscription Identifiers Available (byte)
$raw_prop .= pack("C C", MQTT_SUBSCRIPTION_IDENTIFIER_AVAILABLE, delete $args{'subscription_identifier_available'});
}
if (exists $args{'shared_subscription_available'}) {
# 3.2.2.3.13 Shared Subscription Available (byte)
$raw_prop .= pack("C C", MQTT_SHARED_SUBSCRIPTION_AVAILABLE, delete $args{'shared_subscription_available'});
}
if (exists $args{'server_keep_alive'}) {
# 3.2.2.3.14 Server Keep Alive (short int)
$raw_prop .= pack("C n", MQTT_SERVER_KEEP_ALIVE, delete $args{'server_keep_alive'});
}
if (exists $args{'response_information'}) {
# 3.2.2.3.15 Response Information (utf8 string)
utf8::encode( $args{'response_information'} );
$raw_prop .= pack("C n/a*", MQTT_RESPONSE_INFORMATION, delete $args{'response_information'});
}
if (exists $args{'server_reference'}) {
# 3.2.2.3.16 Server Reference (utf8 string)