我很难尝试使用Ari4Java向ARI打开WebSocket。
我对ARI的理解是我将使用HTTP POST连接发送命令,但我可以注册以通过WebSocket接收事件。这正是我想要做的。我试过这个:
final ARI ari = AriFactory.nettyHttp("http://127.0.0.1:8088/",
"dialoutUser", "seekrit-password", AriVersion.ARI_1_7_0);
final ActionEvents actionEvents = ari.events();
actionEvents.eventWebsocket("Dial", new AriCallback<Message>() {
@Override
public void onSuccess(Message result) {
LOG.info("Yes! " + result);
}
@Override
public void onFailure(RestException e) {
LOG.info("No! " );
}
});
我知道密码是正确的,因为我可以使用相同的用户和密码发送命令(让它拨号等)。
我实际上修改了Ari4Java源代码并在各个地方放入了日志消息来跟踪它正在做什么,它确实创建了一个WsClient。
但没有任何联系。我用过:
tcpflow -i lo port 8088
没有任何显示。它甚至没有尝试打开连接。
我修改了我的pom.xml文件以使用当前版本的Jackson,并使用Ari4Java中推荐的旧版本2.2.2。没有区别。
我查看了ActionEvents类,当我调用eventWebSocket()时,它使用buildEventWebSocket()设置所有内容,然后调用httpActionAsync()。 buildEventWebSocket()似乎确实进入了Netty的WebSocket代码,它创建了一个WsClient对象,但似乎没有任何东西在tcp级别发生。没有例外被抛出。
我必须遗漏一些非常基本的东西。
由于