web-services - 服务器将数据从Clojure推送到ClojureScript

标签 web-services clojure push-notification clojurescript core.async

我正在用Clojure编写应用程序服务器,该服务器将在客户端上使用ClojureScript。

我想找到一种高效,惯用的方式,将数据作为实时事件从服务器推送到客户端,最好使用以下几种组合:

  • http-kit
  • core.async
  • 戒指

  • (但我愿意接受其他可能性)

    谁能提供一个很好的例子/方法来做到这一点?

    最佳答案

    我更喜欢使用aleph,这是wiki,您可以简单地使用wrap-ring-handler函数包装现有的处理程序。

    对于“推送”功能,最有用的部分是aleph的异步处理程序。它建立在netty之上,而不是一个连接一个线程的模型,因此服务器端无需担心tcp连接数。

    一些实现细节:

  • 服务器端使用aysnc处理程序,保留所有客户端连接( channel )
  • 在60(例如)秒内,如果没有“新数据”,则发送一个空响应
  • 如果服务器端有响应,请发送它。
  • 客户端可以简单地将正常的http请求发送到服务器
  • 当客户端获得响应时,
  • 处理响应正文,然后再次重新发送http请求
  • 请检查客户端和所有代理服务器以设置正确的超时值

  • 这里有更多方法:http://en.wikipedia.org/wiki/Push_technology

    关于web-services - 服务器将数据从Clojure推送到ClojureScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21823002/

    相关文章:

    iphone - 将二进制图像数据从 Web 服务读取到 UIImage 中

    concurrency - Clojure 中的 commute 和 alter 有什么区别?

    iOS 锁定事件委托(delegate)?

    android - Phonegap 推送通知以打开特定的应用程序页面

    android - Android Notification 上的最长声音持续时间

    python - 如何在Docker中运行两个python应用程序

    javascript - 如何在 Javascript 中异步更新动态生成的 HTML 控件

    java - 开发 Web 服务的 Java 技术最佳实践?

    编写 try block 的 Clojure 宏

    clojure - 从 Clojure 记录返回普通 map