为什么套接字事件"新消息"多次打电话?

时间:2016-05-04 05:51:06

标签: ios swift sockets

我第一次在socket上工作。我在事件

上收到来自服务器的消息

socket.on("new message")

以下是我正在做的步骤

第1步:

socket.connect()

成功连接后,我使用

加入群组

第2步:

 socket.emit("joinRoom",groupId,userId,message)

然后使用

第3步:

socket.emit("send message", groupId,userId,mobileNo,type,message)

现在,一旦我完成发送消息,服务器正在播放从

调用的相同消息
 override func viewDidAppear(animated: Bool)
    {
        super.viewDidAppear(animated)
        SocketIOManager.sharedInstance.getChatMessage
            { (messageInfo) -> Void in
            dispatch_async(dispatch_get_main_queue(), { () -> Void in


            })
        }

    }

这是套接字getChatMessage的方法,一旦我完成发送消息就会多次调用。

    func getChatMessage(completionHandler: (messageInfo: [String: AnyObject]) -> Void) 
    {

        socket.on("new message")
        {
        (dataArray, socketAck) -> Void in


            var messageDictionary = [String: AnyObject]()


            let temp = dataArray[0]


           completionHandler(messageInfo: messageDictionary)
        }

    }

我不知道我是否遗漏了代码中的内容或事件socket.on("new message")的问题。谁能建议我解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为问题在于即使页面已消失,socket.on(“ new message”)仍在监听事件。

因此,下次出现该视图时,将再次调用getChatMessage并再次实例化socket.on(“ new message”),因此现在有两件事正在监听“ new message”发出事件。

您可以通过在viewwill消失的状态下调用socket.off(“ new message”)来解决此问题