最近做一款直播类app,发送弹幕和礼物啥的用的socket,但是socket怎么都连接不上,也没走任何回调方法,发弹幕的时候会走 error回调,返回error : Tried emitting when not connected,后来检查了下发现是SocketManager和SocketIOClient被提前释放了。看下原代码:
SocketManager *manager = [[SocketManager alloc] initWithSocketURL:url config:@{@"log": @NO,@"forcePolling":@YES,@"reconnectWait":@1}];
chatSocket = manager.defaultSocket;
这里manager和chatSocket被提前释放,自然不会出现回调。处理方法就是把这两个改成全局成员变量就行:
{
SocketIOClient *_chatSocket;
SocketManager *_skManager;
}
// 实现代码
_skManager = [[SocketManager alloc] initWithSocketURL:url config:@{@"log": @NO,@"forcePolling":@YES,@"reconnectWait":@1}];
_chatSocket = _skManager.defaultSocket;
这样改完后就可以了
网友评论