我第一次在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")
的问题。谁能建议我解决这个问题?
答案 0 :(得分:0)
我认为问题在于即使页面已消失,socket.on(“ new message”)仍在监听事件。
因此,下次出现该视图时,将再次调用getChatMessage并再次实例化socket.on(“ new message”),因此现在有两件事正在监听“ new message”发出事件。
您可以通过在viewwill消失的状态下调用socket.off(“ new message”)来解决此问题