vertx.io(3.0.0)websocket无法正常工作

时间:2015-08-04 19:53:51

标签: websocket vert.x

使用Vertx.io 3.0.0版我试图让网络服务器通过websocket与客户端进行通信。

以下是在Xtend(Java)

中创建Vertx websocket的方法
val sockJSHandler = SockJSHandler.create(vertx);
val options = new BridgeOptions() => [
    inboundPermitted = #[new PermittedOptions() => [
        addressRegex = '/*'
    ]]
    outboundPermitted = #[new PermittedOptions() => [
        addressRegex = '/*'
    ]]
]
sockJSHandler.bridge(options, [ be |
    println(be.type)
    if (be.type == "SEND") {
        println(be.rawMessage.getString("address"));
        bus.send(be.rawMessage.getString("address"), be.rawMessage.getJsonObject("body"), [handler | 
            println(handler.result.body);
            if(handler.succeeded){
                handler.result.reply(handler.result.body);
                be.complete(true);
            } else {
                be.complete(false)
            }
            return
        ]);

    } else {
        be.complete(true);
        return 
    }

我遇到的问题是websocket永远不会收到服务器的响应。当我查看开发工具中的网络选项卡时,请求保持挂起状态。代码通过if(handler.succeeded)到达true

我缺少什么?

1 个答案:

答案 0 :(得分:0)

在目前的情况下,正则表达式不好,它应该是.*而不是/*

val options = new BridgeOptions() => [
   inboundPermitted = #[new PermittedOptions() => [
        addressRegex = '.*'
    ]]
    outboundPermitted = #[new PermittedOptions() => [
        addressRegex = '.*'
    ]]
]

这解决了这个问题。

请注意vertxbus-2.1.js收到错误但未对其进行任何操作。