我正在运行一个将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}}
答案 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>