首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >websocket连接中断的原因

websocket连接中断的原因
EN

Stack Overflow用户
提问于 2016-05-12 12:28:45
回答 1查看 1.1K关注 0票数 6

当我在websocket服务器上运行客户端后,它在大约半分钟后与WebSocket closed with status 1006消息断开连接。

请建议如何避免这种行为(浏览器客户端似乎不受影响)

代码语言:javascript
运行
复制
use 5.20.0;
use Mojo::UserAgent;
use Mojo::IOLoop;

sub ws_connect {

  state $ua;

  say "Connecting..";
  $ua = Mojo::UserAgent->new;
  $ua->websocket('ws://127.0.0.1:3000/echo' => \&onConnect);

}

sub onConnect {
  my ($ua, $tx) = @_;

  if (!$tx->is_websocket) {
        say 'WebSocket handshake failed!';
  }
  say "Connected!";

  $tx->on(finish => sub {
        my ($tx, $code) = @_;
        say "WebSocket closed with status $code";
  });

}

ws_connect();
Mojo::IOLoop->start;

回波服务器

代码语言:javascript
运行
复制
use Mojolicious::Lite;
use Mojo::EventEmitter;

helper events => sub { state $events = Mojo::EventEmitter->new };

# get '/' => 'chat';

websocket '/echo' => sub {
  my $c = shift;

  $c->inactivity_timeout(3600);

  # Forward messages from the browser
  $c->on(message => sub { shift->events->emit(mojochat => shift) });

  # Forward messages to the browser
  my $cb = $c->events->on(mojochat => sub { $c->send(pop) });
  $c->on(finish => sub { shift->events->unsubscribe(mojochat => $cb) });
};

app->start;
EN

Stack Overflow用户

回答已采纳

发布于 2016-05-13 07:01:09

如果客户端和服务器之间没有数据,那么可能已经达到了非活动超时。

你试过增加inactivity_timeout吗?(也可以简单地将其设置为0,用于无限制的无活动状态)

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37186906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档