我正在开发一个需要连接到网络套接字服务器的 iOS 应用。
我可以成功连接到服务器,但是当我向它发送请求时,它会断开连接。
我正在使用 Starscream网络套接字库。
根据服务器支持团队: 它不支持协议(protocol)压缩,但在下面的 header 中,他们向我们请求“permessage-deflate”。我们会很好地接受未压缩的消息(它只是数据包上的一个标志)但由于他们要求的扩展,我们发送的消息将使用该标志集进行压缩。
我使用 Swift 按如下方式发送请求
let dict = ["Parameter1":"value1","Parameter2":"value2"]
do {
let data = try NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions(rawValue: 0))
var jsonString: String = String(data: data, encoding: UInt())!
self.socket.writeString(jsonString);
} catch {
print(error)
}
它与服务器断开连接并打印以下消息。
“websocket 已断开连接:可选(”masked 和 rsv 数据当前不支持)“
最佳答案
服务器支持团队的意思是来自您的 WebSocket 客户端应用程序的请求包含如下所示的 HTTP header 。
Sec-WebSocket-Extensions: permessage-deflate
因此,如果您的应用程序有如下一行,请将其删除。
socket.headers["Sec-WebSocket-Extensions"] = "permessage-deflate"
关于ios - 网络套接字 : Starscream "masked and rsv data is not currently supported",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34676881/