无法在服务器(SpringBoot)和 iOS 之间建立 WebSocket 连接
Posted
技术标签:
【中文标题】无法在服务器(SpringBoot)和 iOS 之间建立 WebSocket 连接【英文标题】:Cant able to make WebSocket connection between server(SpringBoot) and iOS 【发布时间】:2017-10-27 11:13:43 【问题描述】:我正在尝试在 ios 和服务器(SpringBoot)之间建立 WebSocket 连接。在服务器端,我们正在使用这样的 WebSocket 连接。
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer
@Override
public void configureMessageBroker(MessageBrokerRegistry config)
config.enableSimpleBroker(URLMapping.WS_SEND);
config.setApplicationDestinationPrefixes(URLMapping.WS_PREFIX);
@Override
public void registerStompEndpoints(StompEndpointRegistry registry)
registry.addEndpoint("/api/v1/transactionSocket").setAllowedOrigins("*").withSockJS();
在 IOS 中,我使用 StompClient 库来建立 WebSocket 连接。
func makeConnection()
let client = StompClient(url: URL(string: "/api/v1/transactionSocket")!)
client.delegate = self
client.connect()
func disconnectConnection()
client.disconnect()
print("Disconnecting :\(client)")
func stompClientDidConnected(_ client: StompClient)
print("Stomp got connected: \(client) .... \(client.isConnected)")
// client.subscribe("API")
func stompClient(_ client: StompClient, didErrorOccurred error: NSError)
print("Stomp Error occures \(client) errror: \(error)")
func stompClient(_ client: StompClient, didReceivedData data: Data, fromDestination destination: String)
print("Cliemt: \(client) Data: \(data) destination: \(destination)")
在运行时,既没有建立连接,也没有调用 'stompClientDidConnected' 委托方法。
我没怎么用过WebSocket。所以无法理解是什么原因。任何帮助将不胜感激。
谢谢
【问题讨论】:
您的客户端对象是 makeConnection() 中的一个局部变量。一旦该方法超出范围,客户端对象就会从内存中释放。 在顶部声明客户端对象后..我在“didErrorOccurred”委托方法中收到此错误日志“Error Domain=WebSocket Code=200 “Invalid HTTP upgrade” 【参考方案1】:你可以使用StopmClientLib
进行socket连接,也有subscribe方法。
https://github.com/wrathchaos/StompClientLib
【讨论】:
成功了……终于找到了解决办法。我使用了这个库并通过在 url 中附加“/websocket”来强制客户端和服务器之间的连接。以上是关于无法在服务器(SpringBoot)和 iOS 之间建立 WebSocket 连接的主要内容,如果未能解决你的问题,请参考以下文章
Java之 Spring Cloud 微服务搭建 Feign组件(第二个阶段)SpringBoot项目实现商品服务器端是调用
Grafana+Prometheus系统监控之SpringBoot
计算机毕业设计之java+springboot基于vue的4S店车辆管理系统
java版Spring Cloud+SpringBoot+mybatis+uniapp b2b2c 多商家入驻商城之终端设置