PEF-Front-WebSocket
view release on metacpan or search on metacpan
#startup.pl
use WSTest::AppFrontConfig;
use PEF::Front::Config;
use PEF::Front::WebSocket;
use PEF::Front::Route;
PEF::Front::Route::add_route(
get '/' => '/appWs',
);
PEF::Front::Route->to_app();
# $PROJECT_DIR/app/WSTest/WebSocket/Echo.pm
package WSTest::WebSocket::Echo;
sub on_message {
my ($self, $message) = @_;
$self->send($message);
}
1;
# $PROJECT_DIR/templates/ws.html
<html>
<head>
<script language="Javascript">
var s = new WebSocket("ws://[% hostname %]:[% request.port %]/wsEcho");
s.onopen = function() {
alert("connected !!!");
s.send("ciao");
};
s.onmessage = function(e) {
var bb = document.getElementById('blackboard')
var html = bb.innerHTML;
bb.innerHTML = html + '<br/>' + e.data;
};
s.onerror = function(e) {
alert(e);
}
s.onclose = function(e) {
alert("connection closed");
}
function invia() {
var value = document.getElementById('testo').value;
s.send(value);
}
</script>
</head>
<body>
<h1>WebSocket</h1>
<input type="text" id="testo" />
<input type="button" value="invia" onClick="invia();" />
<div id="blackboard"
style="width: 640px; height: 480px; background-color: black; color: white; border: solid 2px red; overflow: auto">
</div>
</body>
</html>
# wstest.ini
[uwsgi]
plugins = coroae
chdir = /$PROJECT_DIR
logger = file:log/demo.log
psgi = bin/startup.pl
master = true
processes = 4
coroae = 1000
perl-no-plack = true
psgi-enable-psgix-io = true
uid = $PROJECT_USER
gid = www-data
chmod-socket = 664
=head1 AUTHOR
This module was written and is maintained by Anton Petrusevich.
=head1 Copyright and License
Copyright (c) 2016 Anton Petrusevich. Some Rights Reserved.
This module is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
=cut
( run in 0.693 second using v1.01-cache-2.11-cpan-39bf76dae61 )