【问题标题】:Websocket : Starscream "masked and rsv data is not currently supported"Websocket:红蜘蛛“当前不支持屏蔽和 rsv 数据”
【发布时间】:2016-04-13 03:01:41
【问题描述】:

我正在开发一个需要与 web socket 服务器连接的 iOS 应用程序。

我可以成功连接到服务器,但是当我向它发送请求时,它会断开连接。

我正在使用Starscream 库作为网络套接字。

根据服务器支持团队: 它不支持协议压缩,但在下面的标题中,他们向我们请求“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 已断开连接:可选(“当前不支持屏蔽和 rsv 数据”)”

【问题讨论】:

    标签: ios websocket


    【解决方案1】:

    如果服务器不接受传入连接(无论原因如何),或者服务器崩溃,也可能会引发此错误。 基本上,当这条消息出现时,最好的做法是检查服务器上发生了什么,因为你可能会浪费时间尝试改进客户端代码(它发生在我身上:)

    【讨论】:

      【解决方案2】:

      服务器支持团队的意思是来自您的 WebSocket 客户端应用程序的请求包含如下所示的 HTTP 标头。

      Sec-WebSocket-Extensions: permessage-deflate
      

      所以,如果您的应用程序有如下一行,请将其删除。

      socket.headers["Sec-WebSocket-Extensions"] = "permessage-deflate"
      

      【讨论】:

        猜你喜欢
        • 2019-12-13
        • 2017-10-24
        • 1970-01-01
        • 2020-02-01
        • 2021-06-03
        • 2019-10-19
        • 2010-09-21
        • 2021-08-08
        • 1970-01-01
        相关资源
        最近更新 更多