ios - 网络套接字 : Starscream "masked and rsv data is not currently supported"

标签 ios websocket

我正在开发一个需要连接到网络套接字服务器的 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/

相关文章:

ios - 如何在Objective-C中播放Lottie动画

ios - 快速将对象添加到 nsmutablearray

ios - GoogleTagManager 警告 : No default container found. Container needs to be added to a container folder and added to the target

ios - 广告关闭后状态栏背景发生变化

ios - 使用 NSUserDefaults 保存按钮的标签

javascript - html javascript 连接到原始套接字

javascript - WebSocket ws如何模拟错误事件?

amazon-web-services - 使用 websocket 连接的客户端连接到 memcached

javascript - 使用 Pusher 库从 JS Web 客户端发送数据时生成异常

javascript - 将 websocket 与 Thin 结合使用