没有为writePing调用StarScream websocketDidReceivePong

Dur*_*n.H 2 keep-alive websocket ios starscream

我想定期ping服务器以保持连接活动.

这是发送ping的功能

socket.writePing(NSData())
Run Code Online (Sandbox Code Playgroud)

但我没有得到乒乓球

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

当服务器发回pong时,上面的委托将被触发.

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

WebSocketPongDelegate
Run Code Online (Sandbox Code Playgroud)

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

WS://echo.websocket.org/

我想知道为什么我没有从网络套接字服务器回来.

Jey*_*ran 6

你的插座是你班级的财产,以确保它坚持下去?如果仅在函数堆栈上分配它,它将超出范围,并且永远不会调用委托.此外,pongDelegate它与常规委托分开,因此您还需要将其设置为self:

socket.pongDelegate = self