javascript中的Vertx eventBus引用

时间:2015-11-12 16:16:45

标签: angularjs spring-boot event-bus vert.x

我正在运行一个将vertx集成在内部的弹簧启动服务器,如下所示

在我的春季启动应用程序类

@RequestMapping("/")
public String home() {
    EventBus eventBus = vertx.eventBus();

    while (true) {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        eventBus.publish("CNotifications", "message sent : {}" + message_counter++);
    }
}

在我的弹簧控制器中

controllers.controller('indexCtrl', function ($scope, vertxBus) {

    angular.element(document).ready(function () {
        vertxBus.registerHandler("CNotifications", function(message) {
            console.log('Received message ' + message);
        });
    });
});

如何在客户端(角度)端获取事件总线的句柄?我尝试过如下角度的vertx模块

<script type="text/javascript" src="lib/vertx/sockjs.min.js"></script>
<script type="text/javascript" src="lib/vertx/vertxbus-3.1.0.js"></script>
<script type="text/javascript" src="lib/vertx/angular-vertx.min.js"></script>

但错误说没有这样的函数registerHandler。我可以使用另一个vertx角度包装模块吗?或者我可以修复上面的代码以使其工作。我在index.html

中添加了以下js
{{1}}

1 个答案:

答案 0 :(得分:1)

你问过几件事......

Spring Boot中的Vert.x

首先:如果您不需要Spring Boot,可以使用Vert.x itself直接打开服务器。

但如果要求此设置:请查看full working official demo using Spring Boot by Vert.x itself at GitHub

备注element.ready

您在控制器中使用angular.element(document).ready。这没有任何意义。如果控制器已被调用(通过AJS),文档已经准备好了一段时间。当然,它不会破坏您的代码,但不需要它。

AngularJS插件

angular-vertx的作者有cancelled his work on this prototype/project

如果你需要在AngularJS上下文中使用一个好的包装器,我建议你看一下我的项目 angular-vertxbus:它提供了一个可重新连接的包装器和一个带有promise支持的方便的服务api。 / p>