Comet是指基于 HTTP 长连接的“服务器推”技术,是一种不需要客户端主动请求,服务端可以主动给客户端推送消息的技术。

1.使用chunked response来实现Comet

chunked responses最主要的作用是创建Comet sockets。

一个Comet socket 只包含<script>元素的是chunkedtest/html响应。对于每一个chunk,我们写入一个包含JS的

2.导入comet

import akka.stream.Materializer
import akka.stream.scaladsl.Source
import play.api.http.ContentTypes
import play.api.libs.Comet
import play.api.libs.json._
import play.api.mvc._

除此之外也需要一个实例,最好是通过DI来注入一个akka.stream.Materializer

3.通过Flow推送字符串消息

def cometString = Action {
implicit val m = materializer
def stringSource: Source[String, _] = Source(List("kiki", "foo", "bar"))
Ok.chunked(stringSource via Comet.string("parent.cometMessage")).as(ContentTypes.HTML)
}

4.通过Flow推送JSON消息

def cometJson = Action {
implicit val m = materializer
def jsonSource: Source[JsValue, _] = Source(List(JsString("jsonString")))
Ok.chunked(jsonSource via Comet.json("parent.cometMessage")).as(ContentTypes.HTML)
}

5.将Comet与iframe结合使用

Comet helper需要特别使用一种名为forever-iframe的技术,如下html页面所示:

<script type="text/javascript">
var cometMessage = function(event) {
console.log('Received event: ' + event)
}
</script> <iframe src="/comet"></iframe>

Note: 将如下配置添加到你的application.conf中,也要确保在routes中配置了正确的路由能够找到上面的action

play.filters.headers {
frameOptions = "SAMEORIGIN"
contentSecurityPolicy = "connect-src 'self'"
}

有关Comet的示例,请参阅Play Streaming示例

6.Dubug Comet

最简单的方式是使用log()操作来展示将数据映射到流中所出现的所有操作。

最新文章

  1. ng-disabled 不起作用的解决办法
  2. MVC中使用Entity Framework 基于方法的查询学习笔记 (一)
  3. 5.3---找最近的两个数(CC150)
  4. SpringMVC 通过post接收form参数或者json参数
  5. Android设备唯一性判断
  6. [转]基于AnyCAD的准双曲面齿轮建模
  7. ZOJ1648 Circuit Board(线段相交)
  8. OC基础11:基本的C语言特性2
  9. hadoop Yarn运行机制
  10. iOS开发之Block
  11. python基础——继承实现的原理
  12. Spring(3)——装配 Spring Bean 详解
  13. Some notes in Stanford CS106A(2)
  14. centos7/centos6修改系统默认语言
  15. vue.js中 v-show在刷新页面时,会闪一下,如何解决?
  16. sencha touch 侧边栏扩展(只隐藏不销毁)
  17. 一款由css3和jquery实现的响应式设计导航
  18. 经典SQL语句基础50题
  19. Excel VBA入门(六)过程和函数
  20. sharePoint查看与更改用户登录账号

热门文章

  1. mysql大数据表优化
  2. Java 线程池 +生产者消费者+MySQL读取300 万条数据
  3. Mysql指定部分数据同步
  4. mongodb+nodejs 增删查的demo
  5. JUnit4中@Before、@After、@Test等注解的作用
  6. CF 500B New Year Permutation
  7. CI框架 - Xhprof性能监控,用钩子hooks实现
  8. 【linux配置】Linux同步网络时间
  9. CesiumLab V1.4 新功能 BIM数据处理
  10. java的boolean和Boolean