MessageSession 保存了你要发送的到对方的JID,看作者写法JID最好写包含资源,这个对于多端登陆是非常有帮助。
对于我们使用来说透明一般在个人聊天会用到,你主动new MessageSession 然后调用send发送消息,一般这里都是chat个人聊天的类型。
你看源代码其实还是client->send发送消息,就是他connect 服务器的那个套接字来发送消息,注意你new之后一定要不delete 这个会话,他其实当你析构client的时候会释放这些会话链表。
因为 new MessageSession 构造函数时候调用了 registerMessageSession
void ClientBase::registerMessageSession( MessageSession* session )
{
if( session )
m_messageSessions.push_back( session );
}
已经添加到list里面去了。
这个库写的非常好,但作者考虑多线程不是做的很完美。。但问题不大,对于重连实在没有完美的解决方案。
我们开发时候一般都是 recv 在一个线程里面 (我connect 都是异步), client 肯定是在主线程创建,因为我们发送消息都需要调用这个消息,我们需要对这个进行调用。
那么2个线程存在竞争,虽然可以做同步,但没法做的非常完美,很多细节需要考虑