网络插座:星星尖叫"masked and rsv data is not currently supported"



我正在开发一个iOS应用程序,该应用程序需要连接web套接字服务器。

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

我正在使用蜘蛛侠库作为网络套接字。

根据服务器支持团队:它不支持协议压缩,但在下面的标题中,它们请求";渗透放气";我们会接受未压缩的消息(这只是数据包上的一个标志),但由于他们要求的扩展,我们发送的消息将使用该标志集进行压缩

我使用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数据")

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

Sec-WebSocket-Extensions: permessage-deflate

所以,如果你的应用程序有下面这样的行,请删除它

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

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

对于那些在尝试连接到后端WebSocket时面临此问题的人,请确保socket.io的前端和后端版本兼容。运行以下命令为我修复了问题。

pod update

将两者更新为最新版本并解决了问题。

我相信这将解决您的问题。只需添加";wamp";在这样的标题中。

*

var request = URLRequest(url: URL(string: URL)!)
 request.setValue(["wamp"].joined(separator: ","), forHTTPHeaderField: "Sec-WebSocket-Protocol")
       socket = WebSocket(request: request)
     
       socket.delegate = self
       socket.connect()

相关内容

  • 没有找到相关文章

最新更新