【问题标题】:ClientWebSocketContainer - can it be used on the client side to create a websocket connection?ClientWebSocketContainer - 可以在客户端使用它来创建 websocket 连接吗?
【发布时间】:2016-05-11 03:31:16
【问题描述】:

ClientWebSocketContainer Spring 类可以提供到远程端点的 websocket 连接会话。虽然如果尝试使用 ClientWebSocketContainer 的 stop()、start() 和 getSession() 方法重新建立已关闭的连接(尝试失败后),连接已建立,但 ClientWebSocketContainer 认为它没有由于失败尝试中设置的 openConnectionException 而连接。

@Override
public void onFailure(Throwable t) {
    logger.error("Failed to connect", t);
    ClientWebSocketContainer.this.openConnectionException = t;
    ClientWebSocketContainer.this.connectionLatch.countDown();
}

我应该能够以这种方式使用 ClientWebSocketContainer 还是应该创建自己的客户端连接管理器?

【问题讨论】:

    标签: spring-integration spring-websocket


    【解决方案1】:

    我认为这只是一个错误,ClientWebSocketContainer 逻辑中的某种遗漏。

    我刚刚就此事提出了JIRA。今天会修好。

    同时向我们提供更多信息,您的任务是什么?

    ClientWebSocketContainer 基于ConnectionManagerSupport,其中一个实现是WebSocketConnectionManager。所以,考虑使用最后一个来获取会话。

    如果您使用 Spring Integration WebSocket 适配器,除非实现自己的 ClientWebSocketContainer 变体,否则您别无选择。是的,它可能完全基于现有的。

    【讨论】:

    • 感谢您的反馈!我有一个有趣的情况,我需要作为客户端连接到服务器并将数据推送到服务器。这就是我对获取 websocket 会话感兴趣的原因。 IIRC WebSocketConnectionManager 有一个会话,但不提供访问会话的机制,除非通过消息处理程序。
    • M-m-m。你真的需要看看<int-websocket:outbound-channel-adapter>:docs.spring.io/spring-integration/reference/html/…。但请做好准备 SI-4.2.6.RELEASE 明天将提供针对您的问题的修复程序!
    • 嗨 M-m-m,我正在考虑使用 WebSocketOutboundMessageHandler,但如果连接断开,我无法确定如何重新连接套接字。我是否忽略了什么?
    • 是的。你说的对。没有这样的功能。在新版本中,我们在下次检索时重新启动容器以进行死会话。我觉得应该符合你的现实
    • 嗨,Artem,有新版本吗?
    猜你喜欢
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2013-03-21
    相关资源
    最近更新 更多