我正在开发一个需要与Web套接字服务器连接的iOS应用程序。
我可以成功连接到服务器但是当我发送请求时,它会断开连接。
我正在使用Starscream库来处理网络套接字。
根据服务器支持团队: 它不支持协议压缩,但在下面的标题中,它们要求我们“渗透 - 缩小”。我们接受未压缩的消息就好了(它只是数据包上的一个标志)但是由于它们要求的扩展,我们发出的消息将被设置为压缩标记。
我使用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断开连接:可选(”当前不支持屏蔽和rsv数据“)”
答案 0 :(得分:1)
服务器支持团队的意思是来自WebSocket客户端应用程序的请求包含如下所示的HTTP标头。
AddIn_control1 = New AddIn_control
AddIn_taskpane = Me.CustomTaskPanes.add(AddIn_control1, "Add-in taskpane", Me.Application.ActiveWindow)
因此,如果您的应用程序有如下所示的行,请将其删除。
Sec-WebSocket-Extensions: permessage-deflate
答案 1 :(得分:0)
如果服务器无论出于何种原因都不接受传入的连接,或者服务器刚刚崩溃,也可能引发此错误。 基本上,当发生这种情况时,最好的办法是检查服务器上正在发生什么,因为您可能会浪费时间尝试改进客户端代码(这发生在我身上:)