【问题标题】:Vertx eventBus reference in javascriptjavascript 中的 Vertx eventBus 引用
【发布时间】:2015-11-12 16:16:45
【问题描述】:

我正在运行一个集成了 vertx 的 Spring Boot 服务器,如下所示

在我的 Spring Boot 应用程序类中

@Bean
public Vertx vertx() {
    return Vertx.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++);
    }
}

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

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

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

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

<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>

【问题讨论】:

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


    【解决方案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:它提供了一个可重新连接的包装器和一个方便的服务 api,并带有承诺支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2022-08-05
      • 1970-01-01
      • 2020-01-03
      相关资源
      最近更新 更多