Swift StompClient与SockJS在连接期间的行为不一致

时间:2017-02-07 02:08:37

标签: swift stomp

我正在使用StompClient(https://github.com/ShengHuaWu/StompClient)将我的iOS(swift 3)应用程序连接到Spring容器中托管的stomp套接字。

似乎从Web浏览器使用sockjs并连接到ws:/ server / topic_name时,它会自动将server_id和session_id添加到url(ws:// server / server_id / socket_id / topic_name)。

当我使用Swift StompClient时,似乎没有将这些附加项添加到路径中。

任何人都知道怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

Sockjs设计用于浏览器,因为尚未在所有浏览器中支持WebSocket。您在上面提到的url是sockjs协议的一部分。

iOS具有对WebSocket的本机支持。所以你不需要依赖sockjs。有像这样的Stomp库你可以使用https://github.com/mobile-web-messaging/StompKit

需要注意的一点是,如果您使用的是Spring容器,并且只要您在应用程序上下文中进行配置打击:

    <websocket:stomp-endpoint path="/spring-websocket-portfolio/portfolio" allowed-origins="*">
        <websocket:sockjs/>
    </websocket:stomp-endpoint>

你应该连接到ws:// localhost / spring-websocket-portfolio / portfolio / websocket。