I have nginx with following config:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name mydomain.com;
location / {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header ssl $ssl_protocol;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 65s;
}
}
I have the following websocket server:
use Mojolicious::Lite;
use Mojo::Redis;
use Mojo::IOLoop;
websocket '/' => sub {
my $self = shift;
$self->inactivity_timeout(65);
my $pub = Mojo::Redis->new;
my $sub = $pub->subscribe('test');
my $w = Mojo::IOLoop->recurring(60 => sub {
$self->send([1, 0, 0, 0, 9, 'PING']);
});
$sub->on(message => sub {
my ($sub, $message, $channel) = @_;
$self->send($message . ' ' . time);
});
$self->on(message => sub {
my ($conn, $msg) = @_;
$conn->send("echo: $msg");
});
$self->on(finish => sub {
undef $self;
undef $pub;
undef $sub;
Mojo::IOLoop->remove($w);
});
};
app->start;
And i have following js code:
var socket = new WebSocket("ws://mydomain.com")
soket.onopen = function() {
console.log("Connection established");
}
socket.onclose = function(event) {
if (event.wasClean) {
console.log('Connection was closed cleanly');
}
else {
console.log('Connection reseted');
}
console.log('Code: ' + event.code + ' Reason: ' + event.reason);
};
socket.onmessage = function(event) {
console.log('Recieved data: ' + event.data);
};
socket.onerror = function(error) {
console.log('Error: ' + error.message);
}
And after 10 minutes i have reset connection with code 1006. This is the
messages in browser console:
[ws://mydomain.com] Connection established
[ws://mydomain.com] Connection reseted
[ws://mydomain.com] Code: 1006 Reason:
I tried to change inactivity_timeout in mojolicious and proxy_read_timeout
in nginx and it didn't help.
Please help me to understand, what i doing wrong.
Thanks.
--
You received this message because you are subscribed to the Google Groups
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.