StarScream websocketDidReceivePong 没有被 writePing 调用

StarScream websocketDidReceivePong is not getting called for writePing

我想定期向服务器发送 ping 以保持连接。

这是发送ping的函数

socket.writePing(NSData())

但我没有找回乒乓球

func websocketDidReceivePong(socket: WebSocket){
    wsConsole.text = wsConsole.text .stringByAppendingString("\n websocket received pong")
}

当服务器发回 pong 时,上述委托将被解雇。

仅供参考: 我能够成功建立 web 套接字连接发送消息和关闭连接并且我已经实现并且我已经给出 socket.delegate=self

WebSocketPongDelegate

这是我用于测试目的的网络套接字url

ws://echo.websocket.org/

我想知道为什么我没有从网络套接字服务器取回 pong。

您的插座是否是 class 的 属性 以确保其固定?如果您只在函数堆栈上分配它,它将超出范围并且永远不会调用委托。此外 pongDelegate 与常规委托是分开的,因此您也需要将其设置为 self :

socket.pongDelegate = self