如何在JavaScript和Scala之间实现实时通信
How to get real-time communication between JavaScript and Scala
我正在努力寻找从Scala到JavaScript实时通信的最佳解决方案
到目前为止,测试了几个想法,但给定的库每秒必须处理大约1000个请求,并不是每个解决方案都是最好的
下面附上了其中一种方法。if (modulo == 0)
语句需要一些快速库来将事件推送到前端
您对vert.x
及其pub子库有何看法?https://github.com/vert-x/vertx-examples/tree/master/src/raw/scala/pubsub.
这个库每秒能处理1000个请求吗?与此问题相同https://github.com/vert-x/vertx-examples/tree/master/src/raw/scala/websockets我正在尝试此推送消息库https://www.scaledrone.com/但它在一开始就失败了(每秒只有10个请求)
或者,也许我期望很高,但以简单的方式实现这么多请求并不容易。我使用的是Redis,它有pub-sub协议。那么,也许有一些简单的方法可以在前端将数据从Redis推送到JavaScript?
private def checkQueue(r: RedisClient, numbers: List[Int]): Unit = {
val d1 = new Date()
val format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val now = new Date()
for (nr <- numbers) {
val ranges = r.hkeys("user_" + nr + ":soldier:queue_time")
ranges match {
case Some(ss) => for (range <- ss) {
val added_time = r.hget("user_" + nr + ":soldier:queue_time", range)
val saved = format.parse(added_time.get)
val diff = (now.getTime - saved.getTime) / 1000 // diff in sec
val interval = r.hget("user_" + nr + ":soldier:interval", range)
val modulo = diff % interval.get.toInt
if (modulo == 0) {
val queue_amount = r.hget("user_" + nr + ":soldier:queue_amount", range)
if (queue_amount.get.toInt >= 1) {
r.hincrby("user_" + nr + ":soldier:amount", range, 1)
r.hincrby("user_" + nr + ":soldier:queue_amount", range, -1)
}
}
}
case None =>
}
}
val d2 = new Date()
println("loop time: " + (d2.getTime - d1.getTime) + " milliseconds")
}
So maybe there is some easy way to push data from Redis to JavaScript at the frontend?
检查Webdis,它为Redis提供了HTTP接口。包括Pubsub功能:
Pub/Sub using Transfer-Encoding: chunked, works with JSONP as well. Webdis can be used as a Comet server.
您也可以使用Play编写自己的Comet、Stream或Websocket服务器。你也可以看看这个项目的灵感。
相关文章:
- HTML中两种JS实现之间的差异
- 如何在three.js中实现不同相机/场景之间的交叉渐变
- 如何在Ionic Framework中实现选项卡页面之间的转换
- 无法在 JS 树和 JQ 网格行之间实现拖放
- 如何在AngularJS中实现控制器之间的通信
- Javascript 实现差异(以 2 个日期之间的天数为单位)
- 这两种实现之间有什么区别
- 尝试实现 ng-repeate 和表单之间的双向绑定
- 如何使用箭头键实现之间的导航
- 如何在javascript中实现对象之间的引用
- 如何设置AngularJS项目以在使用不同的服务实现之间进行交替
- 注意到JSON.stringify的不同实现之间有一个奇怪的差异
- 有没有一种方法可以使用lightbox2实现图像之间更平滑的过渡?
- 承诺的两种实现之间的差异
- 如何实现两个表之间的拖放,与所有的内容
- 在页面跳转之间实现sessionStorage
- 如何实现一个AngularJS滑块,其中3个滑块在一个可分发值之间共享
- 如何在 JavaScript 中实现异步函数之间的依赖关系
- 实现HighCharts和服务器之间的通信R
- 如何在JavaScript和Scala之间实现实时通信