首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保在Aleph中保持websocket连接正常

如何确保在Aleph中保持websocket连接正常
EN

Stack Overflow用户
提问于 2016-01-19 07:08:37
回答 1查看 713关注 0票数 2

我正在尝试与Slack的RTM与Aleph进行接口。

目前我有这样的代码:

代码语言:javascript
复制
(defn connect-socket []
  (let [conn @(http/websocket-client (get-websocket-url))]
    (s/consume #(prn %) conn)
    (send-message conn {:type "ping"}) ;; just to check if send-message works
    (s/on-closed conn (prn "closed"))))

它在最初几次运行良好,然后conn在一些不活动之后停止接收来自Slack的消息。它也不打印“关闭”,这似乎意味着流没有关闭。我不太清楚这是怎么回事。

我怎样才能使websocket连接保持活跃,或者如果断开连接,则自动重新连接?我在野外看到过一些代码在做pings,但我认为我对代码的理解不够好,无法适应它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 08:19:10

我认为您必须发送ping消息,因为:

  • websocket解连接由一个特殊的数据包发出信号。
  • 没有办法把这个包裹寄出去。网络错误
  • 没有“自动重新连接”功能,除非您可能使用一个为您服务的库(我个人希望sente支持Aleph)。

因此,你必须定期做一些“打招呼”。对于代码,on-closed需要一个函数作为第二个参数,所以:(s/on-closed! conn #(prn "closed"))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34870519

复制
相关文章

相似问题

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