Ĭ��
�������� 3
�뿪��IM������Ʒ�¿ӣ�����3���¹����ҿ�Դ����ߣ������������·��... ��վ�����㽨��
MINA2 �߳�ԭ���ܽᣨ���򵥲���ʵ����

��һ���֣�MINA�ĺ�������ԭ��


MINA2 �߳�ԭ���ܽᣨ���򵥲���ʵ����_0_1321680533GbMv.gif

���������߼���


IO���루IoProcessor��---��־��¼�����롢threadPool��IoFilter��---ҵ���߼�������IoHandler��

д�������߼���


ҵ���߼�������IoHandler��---��־��¼�����롢threadPool��IoFilter��---IOд����IoProcessor��

����


�����Ͽ��Կ�����IO������IOд���Ĺ������෴�ġ�

�ڶ����֣�MINA���̻߳���ԭ��


������Ҫ����һ��Mina�е��̣߳�ʹ���̣߳��̳߳ؿ����������ܣ�Mina�о�ʹ���˼����̣߳�

2.1 IoAcceptor/IoConnector �߳̽���


IoAcceptor���ڼ����ͻ��˵����ӣ�ÿ����һ���˿ڽ���һ���̡߳�IoConnector�����������˽������ӣ�ÿ����һ�������˾ͽ���һ���̡߳��������̶߳���ͨ���̳߳ؽ����ģ����ǿ����ڹ���������ʱ����ָ���̳߳����ͣ�
public NioSocketAcceptor(Executor executor, IoProcessor<NioSession> processor) {}    
public NioSocketConnector(Executor executor, IoProcessor<NioSession> processor) {}

�����̳߳صĹ�����Դ������Ϊ��AbstractIoService��168�У���
protected AbstractIoService(IoSessionConfig sessionConfig, Executor executor) {    
//ʡ�Բ��ִ���    
        if (executor == null) {    
            this.executor = Executors.newCachedThreadPool();    
            createdExecutor = true;    
        } else {    
            this.executor = executor;    
            createdExecutor = false;    
        }           
}  

�ɴ˿ɼ�Ĭ�ϵ��̳߳�����ΪnewCachedThreadPool������һ���ɸ�����Ҫ�������̵߳��̳߳أ�����ǰ�������߳̿���ʱ�����������ǡ�

2.2 IoProcessor �߳̽���


����һ��IoAcceptor��IoConnector�̶߳�Ӧһ��IoProcessor�߳�����IO�Ĵ���������IoProcessor�̴߳�IoProcessor�̳߳���ȡ����IoProcessor�̳߳صĴ�СĬ��Ϊ������CPU����+1������˫�˻�����IoProcessor���̳߳ش�СĬ��Ϊ3�����ǿ��Ը����̳߳صĴ�С��
IoConnector connector = new NioSocketConnector(9);    
IoAcceptor acceptor = new NioSocketAcceptor(9);   

���ϾͰ�IoProcessor�̳߳صĴ�С��Ϊ9����
IoProcessor�̳߳ص�Ĭ�ϴ�С��Դ�����еĶ��壨SimpleIoProcessorPool��82������
private static final int DEFAULT_SIZE = Runtime.getRuntime().availableProcessors() + 1;

IoProcessor�̳߳صĹ�����Դ������Ϊ��SimpleIoProcessorPool��144�У���
public SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType,  
            Executor executor, int size) {  
        //ʡ�Բ��ִ���  
        if (createdExecutor) {  
            this.executor = Executors.newCachedThreadPool();  
        } else {  
            this.executor = executor;  
        }  
}  

2.3 IoHandler �߳̽���


�������ڹ���������û�����ӡ�threadPool������������ҵ���߼�������IoProcessorʹ��ͬһ���̡߳����������ˡ�threadPool������������ʹ�����õ��̳߳ز����߳̽���ҵ���߼����������������������£�
acceptor.getFilterChain().addLast("threadPool", new ExecutorFilter(Executors.newCachedThreadPool()));  

��������֮����IO������ҵ���߼���������ʹ�ø��Ե��̳߳ز����߳�ʹ�á���������Ӧ��ÿ�δ���������ʱ���ϳ�����ϣ��Ӧ���ܹ��нϺõ���Ӧ�ԣ���ô�����ǰѴ���ҵ���߼��������ŵ�һ���µ��߳���ȥִ�У��������� mina ���ܴ������߳���ȥִ�С�

2.4 �߳��Ǻ�ʱ��������


  • �� IoAcceptor/IoConnectorʵ��������ʱ����ͬʱһ��������IoAcceptor/IoConnector�ϵ�IoProcessor�̳߳�Ҳ��������
  • ��IoAcceptor/IoConnector�����׽��֣�IoAcceptor ��bind()������IoConnector ��connect()���������ã�ʱ�����̳߳���ȡ��һ���̣߳������׽��ֶ˿ڡ�
  • �� IoAcceptor/IoConnector�������׽���������������ʱ������IoSession ���󣬴�IoProcessor����ȡ��һ��IoProcessor�߳�ִ��IO������
  • �����������������ˡ�threadPool������������ʹ�ô��̳߳ؽ����߳�ִ��ҵ���߼���IoHandler������������ʹ��IoProcessor�̴߳���ҵ���߼���

2.5 ͨ�����Ӳ鿴�߳�


�ٸ�����ͨ��jdk�Դ�����jvisualvm���鿴�̣߳�
public class MinaTest {  
    protected static Logger logger = LoggerFactory.getLogger(MinaTest.class);  
    private static int PORT = 9999;  
  
    public static void main(String[] args) {  
        try {  
            // ����һ����������server�˵�Socket  
            IoAcceptor acceptor = new NioSocketAcceptor();  
            // ���ù�����  
            acceptor.getFilterChain().addLast("logger", new LoggingFilter());  
            acceptor.getFilterChain().addLast("codec",  
                    new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));  
            acceptor.getFilterChain().addLast("threadPool", new ExecutorFilter(Executors.newCachedThreadPool()));  
            // ���ö�ȡ���ݵĻ�������С  
            acceptor.getSessionConfig().setReadBufferSize(2048);  
            // ��дͨ��10�����޲�����������״̬  
            acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);  
            // �����߼�������  
            acceptor.setHandler(new MinaServerHandler());  
            // �󶨶˿�  
            acceptor.bind(new InetSocketAddress(PORT));  
            logger.info("�����������ɹ�... �˿ں�Ϊ��" + PORT);  
        } catch (Exception e) {  
            logger.error("�����������쳣....", e);  
            e.printStackTrace();  
        }  
    }  
}  
public class MinaServerHandler extends IoHandlerAdapter {  
    protected static Logger logger = LoggerFactory.getLogger(MinaServerHandler.class);  
  
    public void exceptionCaught(IoSession session, Throwable cause) throws Exception {  
        logger.error("�����˷����쳣...", cause);  
    }  
  
    public void messageReceived(IoSession session, Object message) throws Exception {  
        String msg = message.toString();  
        //������quit�͹ر�session�˳�    
        if ("quit".equals(msg)) {  
            session.close();  
        }  
        Date date = new Date();  
        session.write(date.toString());  
    }  
  
    public void sessionCreated(IoSession session) throws Exception {  
        logger.info("���������ͻ��˴�������...");  
    }  
}  

�������ӣ�
  • ����MinaTest�࣬�����������ˡ�
  • ��ʼ->����->cmd��������̨ ���ڡ�
  • ���룺telnet 127.0.0.1 9999
  • ���ظ�2��3����2�Ρ�

��jvisualvm���߳���ͼ��ͼ���£�
MINA2 �߳�ԭ���ܽᣨ���򵥲���ʵ����_0_1321680668icC9.gif

ͨ�����ϲ������ǿ��Կ�����������һ���������˿ڣ�����3���ͻ��˽������ӡ�

2.6  �ܽ�


ͨ�������ܽ���֪ʶ������һ��ʾ�������з����˲������̣߳�
  • NioSccketAcceptorΪ�������˼����˿�9999ͨ���̳߳ش�����һ���̡߳�
  • NioProcessor-1��NioProcessor-2��NioProcessor-3ΪIoProcessor�̳߳ش������̣߳�����IO������
  • pool-3-thread-1��pool-3-thread-2��pool-3-thread-3Ϊ���������õ��̳߳ش������̣߳�����ҵ���߼�������

ȫվ��ʱͨѶ�������Ϸ���


[1] �������̻������ϣ�
��TCP/IP���� - ��11�¡�UDP���û����ݱ�Э����
��TCP/IP���� - ��17�¡�TCP����������Э����
��TCP/IP���� - ��18�¡�TCP���ӵĽ�������ֹ��
��TCP/IP���� - ��21�¡�TCP�ij�ʱ���ش���
���������£��ı�������TCP/IPЭ�飨������ͼ���ֻ����㣩��
��ͨ���׶�-��������TCPЭ�飨�ϣ������ۻ�����
��ͨ���׶�-��������TCPЭ�飨�£���RTT���������ڡ�ӵ��������
�����۾��䣺TCPЭ����3��������4�λ��ֹ���������
��������ϵʵ�ʣ�Wiresharkץ������TCP 3�����֡�4�λ��ֹ�����
������������ͨѶЭ����ϵͼ���������ذ棩��
��UDP��һ�����Ĵ�С�����ܶ�������
��P2P��������(һ)��NAT���⡪����ϸԭ����P2P������
��P2P��������(��)��P2P�е�NAT��Խ(����)����������
��P2P��������(��)��P2P����֮STUN��TURN��ICE������
��ͨ���׶�����������P2P�����е�NAT��͸ԭ����
����������������(һ)����̨����������TCP���������׿����ж�����
����������������(��)����һ��10�꣬������C10K��������������
����������������(��)����һ��10�꣬��ʱ������C10M������������
����������������(��)����C10K��C10M����������Ӧ�õ�����̽����
����Ϊ��֪����������(һ)��dz��TCPЭ���е�������֢(��ƪ)��
����Ϊ��֪����������(��)��dz��TCPЭ���е�������֢(��ƪ)��
����Ϊ��֪����������(��)���ر�TCP����ʱΪʲô��TIME_WAIT��CLOSE_WAIT��
����Ϊ��֪����������(��)�������о�����TCP���쳣�ر���
����Ϊ��֪����������(��)��UDP�������Ժ͸��ؾ�����
����Ϊ��֪����������(��)������������UDPЭ�鲢�ú�����
������������������(һ)��������������ͨ��Э�飨��ƪ����
������������������(��)��������������ͨ��Э�飨��ƪ����
������������������(��)����������TCPЭ��һƪ�͹���
������������������(��)����������TCP��UDP�IJ�����
��Netty�ɻ�����������������������TCP���ؼ���ʵ���ܽ���
>> ����ͬ������ ����

[2] NIO�첽�����������ϣ�
��Java��һ����������ģ��AIOԭ����LinuxϵͳAIO������
���йء�Ϊ��ѡ��Netty����11�����ʼ�������
����ԴNIO���ܰ��ԡ�������������MINA��������Netty?��
��ѡNetty����Mina�������о����Աȣ�һ����
��ѡNetty����Mina�������о����Աȣ�������
��NIO��������(һ)�������˻���Netty4��UDP˫��ͨ��Demo��ʾ��
��NIO��������(��)�������˻���MINA2��UDP˫��ͨ��Demo��ʾ��
��NIO��������(��)��iOS��MINA2��Netty4�Ŀ�ƽ̨UDP˫��ͨ��ʵս��
��NIO��������(��)��Android��MINA2��Netty4�Ŀ�ƽ̨UDP˫��ͨ��ʵս��
��Netty 4.xѧϰ��һ����ByteBuf������
��Netty 4.xѧϰ��������Channel��Pipeline������
��Netty 4.xѧϰ���������߳�ģ��������
��Apache Mina���ܸ߼�ƪ��һ����IoFilter������
��Apache Mina���ܸ߼�ƪ��������IoHandler������
��MINA2 �߳�ԭ���ܽᣨ���򵥲���ʵ������
��Apache MINA2.0 ����ָ�ϣ����İ棩[��������]��
��MINA��Netty��Դ���루�����Ķ��棩������������
������MINA���ݴ�����TCP��ճ����ȱ�����⣨��Դ�룩��
������Mina�ж���ͬ����Filterʵ��������������
��ʵ���ܽ᣺Netty3.x����Netty4.x��������Щ�ӣ��߳�ƪ����
��ʵ���ܽ᣺Netty3.x VS Netty4.x���߳�ģ����
������Netty�İ�ȫ�ԣ�ԭ�����ܡ�������ʾ����ƪ����
������Netty�İ�ȫ�ԣ�ԭ�����ܡ�������ʾ����ƪ����
������Netty�������˳����ƺ�ԭ����
��NIO�������⣺Netty�ĸ�����֮����
��Twitter������ʹ��Netty 4������JVM��GC���������ģ���
�����Ըɻ�������Nettyʵ�ֺ������������ͷ�������Ҫ����
��Netty�ɻ�����������������������TCP���ؼ���ʵ���ܽ���
>> ����ͬ������ ����

[3] �й�IM/���͵�ͨ�Ÿ�ʽ��Э����ѡ����
��������������TCP��UDP��������
��ΪʲôQQ�õ���UDPЭ��������TCPЭ�飿��
���ƶ��˼�ʱͨѶЭ��ѡ����UDP����TCP����
������ѡ����ʱͨѶӦ�õ����ݴ�����ʽ��
��ǿ�н��齫Protobuf��Ϊ���ļ�ʱͨѶӦ�����ݴ�����ʽ��
��ȫ��λ���⣺Protobuf���ܵ�����û�б�JSON��5������
���ƶ���IM������Ҫ���Եļ������⣨��ͨ��Э��ѡ������
�������ƶ���IM��������Щ�ӣ��ܹ����ơ�ͨ��Э���Ϳͻ�����
��������ϵʵ�ʣ�һ�׵��͵�IMͨ��Э������������
��58����ʵʱ��Ϣϵͳ��Э�����Ƶȼ���ʵ��������
������������NodeJS��ʹ��Google��Protobuf��
>> ����ͬ������ ����

[4] �й�IM/���͵������������
��Ӧ�ñ����ռ��ܽ�(һ)��Android6.0���µ�˫�����ػ�����ʵ����
��Ӧ�ñ����ռ��ܽ�(��)��Android6.0�����ϵı���ʵ��(���̷�ɱƪ)��
��Ӧ�ñ����ռ��ܽ�(��)��Android6.0�����ϵı���ʵ��(��ɱ����ƪ)��
��Android���̱������⣺һƪ���½�����������������
��Android����Ϣ�����ܽ᣺ʵ��ԭ�������������������������
������������Android��Ϣ��������С����
��Ϊ�λ���TCPЭ�����ƶ���IM��Ȼ��Ҫ�����������ƣ���
��΢���Ŷ�ԭ��������Android��΢�ź�̨����ʵս����(���̱���ƪ)��
��΢���Ŷ�ԭ��������Android��΢�ź�̨����ʵս����(���籣��ƪ)��
���ƶ���IMʵ����ʵ��Android��΢�ŵ���������������
���ƶ���IMʵ����WhatsApp��Line��΢�ŵ��������Է�����
>> ����ͬ������ ����

[5] �й�WEB�˼�ʱͨѶ������
��������������ʷ����ȫWeb�˼�ʱͨѶ����ԭ��������
��Web�˼�ʱͨѶ�����̵㣺����ѯ��Comet��Websocket��SSE��
��SSE�������⣺һ��ȫ�µ�HTML5�����������¼�������
��Comet�������⣺����HTTP�����ӵ�Web��ʵʱͨ�ż�����
�����ֿ������ţ�WebSocket�����̳���
��WebSocket���⣨һ����������ʶWebSocket������
��WebSocket���⣨����������ԭ����������ʾ��Ӧ�ð�����
��WebSocket���⣨����������WebSocketͨ��Э��ϸ����
��socket.ioʵ����Ϣ���͵�һ��ʵ����˼·��
��LinkedIn��Web�˼�ʱͨѶʵ����ʵ�ֵ�����ʮ������������
��Web�˼�ʱͨѶ�����ķ�չ��WebSocket��Socket.io�ļ���ʵ����
��Web�˼�ʱͨѶ��ȫ����վ��WebSocket�ٳ�©������(��ʾ������)��
����Դ����Pomeloʵ�����Web�˸����ֲܷ�ʽIM������������
��ʹ��WebSocket��SSE����ʵ��Web����Ϣ������
������Web��ͨ�ŷ�ʽ���ݽ�����Ajax��JSONP �� SSE��Websocket��
>> ����ͬ������ ����

[6] �й�IM�ܹ����ƣ�
��dz̸IMϵͳ�ļܹ�������
�������ƶ���IM��������Щ�ӣ��ܹ����ơ�ͨ��Э���Ϳͻ�����
��һ�׺��������û����ƶ���IM�ܹ�����ʵ������(����ϸͼ��)��
��һ��ԭ���ֲ�ʽ��ʱͨѶ(IM)ϵͳ���ۼܹ�������
�����㵽׿Խ�������ͷ���ʱͨѶϵͳ�ļ����ܹ��ݽ�������
��Ģ���ּ�ʱͨѶ/IM����������֮�ܹ�ѡ����
����ѶQQ1.4�������û��ļ�����ս�ͼܹ��ݽ�֮·PPT��
��΢�ź�̨����ʱ�����ĺ����������ȷּ��ܹ�����ʵ����
��΢�ż����ܼ�̸�ܹ���΢��֮��������������(�ݽ�ȫ��)��
�����ν�����΢�ż����ܼ�̸�ܹ���΢��֮������������������
�������ѱ䣺��֤΢��ǿ����̨�ܹ���0��1���ݽ����̣�һ����
��17����ʵ������Ѷ������Ʒ�ļ�����������
���ƶ���IM�д���ģȺ��Ϣ���������α�֤Ч�ʡ�ʵʱ�ԣ���
���ִ�IMϵͳ��������Ϣ��ͬ���ʹ洢����̽����
>> ����ͬ������ ����

[7] �й�IM��ȫ�����£�
����ʱͨѶ��ȫƪ��һ������ȷ��������ʹ��Android�˼����㷨��
����ʱͨѶ��ȫƪ��������̽�����ϼ����㷨��IM�е�Ӧ����
����ʱͨѶ��ȫƪ�����������üӽ����㷨��ͨѶ��ȫ������
����ʱͨѶ��ȫƪ���ģ���ʵ������Android����ԿӲ�����ķ�����
����ʱͨѶ��ȫƪ���壩���ԳƼ��ܼ�����Androidƽ̨�ϵ�Ӧ��ʵ����
����ʱͨѶ��ȫƪ���������ǶԳƼ��ܼ�����ԭ����Ӧ��ʵ����
�������㰲ȫЭ��SSL/TLS��Javaƽ̨ʵ�ּ�����Demo��ʾ��
��������ϵʵ�ʣ�һ�׵��͵�IMͨ��Э���������⣨����ȫ�����ƣ���
��΢����һ��ͨ�Ű�ȫ��������������TLS1.3��MMTLS������
�����԰���OpenIM�����찲ȫ�ɿ���ʱͨѶ�����ļ���ʵ��������
������ʵʱ����Ƶ�����ж˵��˼��ܣ�E2EE���Ĺ���ԭ����
���ƶ��˰�ȫͨ�ŵ����������˵��˼��ܣ�E2EE������������
��Web�˼�ʱͨѶ��ȫ����վ��WebSocket�ٳ�©������(��ʾ������)��
��ͨ���׶���һƪ���ռ�ʱͨѶ����Ϣ���䰲ȫԭ����
>> ����ͬ������ ����

[8] �й�ʵʱ����Ƶ������
��ר��΢����Ƶ���������ˣ�΢��ʵʱ��Ƶ���켼�����ݽ���
����ʱͨѶ����Ƶ������һ������Ƶ������֮���۸�����
����ʱͨѶ����Ƶ��������������Ƶ������֮������Ƶ������
����ʱͨѶ����Ƶ��������������Ƶ������֮����������
����ʱͨѶ����Ƶ�������ģ�����Ƶ������֮Ԥ�⼼��������
����ʱͨѶ����Ƶ�������壩����ʶ������Ƶ���뼼��H.264��
����ʱͨѶ����Ƶ���������������ο�ʼ��Ƶ�����뼼����ѧϰ��
����ʱͨѶ����Ƶ�������ߣ�����Ƶ����������ԭ��������
����ʱͨѶ����Ƶ�������ˣ���������ʵʱ����ͨѶ������׼��
����ʱͨѶ����Ƶ�������ţ���ʵʱ����ͨѶ�Ļ�������������������
����ʱͨѶ����Ƶ������ʮ����ʵʱ����ͨѶ�Ļ�����������������
����ʱͨѶ����Ƶ������ʮһ����ʵʱ����ͨѶ������������������
����ʱͨѶ����Ƶ������ʮ����������ʵʱ����Ƶ�����ܹ�̽����
����ʱͨѶ����Ƶ������ʮ������ʵʱ��Ƶ����H.264���ص���������
����ʱͨѶ����Ƶ������ʮ�ģ���ʵʱ����Ƶ���ݴ���Э��������
����ʱͨѶ����Ƶ������ʮ�壩������P2P��ʵʱ����Ƶ��Ӧ��������
����ʱͨѶ����Ƶ������ʮ�������ƶ���ʵʱ����Ƶ�����ļ���������
����ʱͨѶ����Ƶ������ʮ�ߣ�����Ƶ����H.264��VP8��ǰ��������
��ʵʱ���������е���Ƶ����������ѹ������������
��������Ƶ�Ƽ�����������Ƶ������ѹ����������������
��ѧϰRFC3550��RTP/RTCPʵʱ����Э������֪ʶ��
��������Դʵʱ����Ƶ����WebRTC����ȱ����
�����ķ�����WebRTC �����������߽̳̣����ģ���
����Դʵʱ����Ƶ����WebRTC��RTP/RTCP���ݴ���Э����Ӧ����
������RTMP���ݴ���Э����ʵʱ��ý�弼���о�������ȫ�ģ���
�������ܹ�ʦ̸ʵʱ����Ƶ�Ƶ�ʵ���ѵ�(��Ƶ�ɷ�)��
��dz̸����ʵʱ��Ƶֱ��ƽ̨�ļ���Ҫ����
�����ڿ���ιιι������ʵʱ����ͨ�����������Ľ�����ѧ�����ⷽ������
��ʵ���ӳٵ���500������1080Pʵʱ����Ƶֱ����ʵ��������
���ƶ���ʵʱ��Ƶֱ������ʵ������������ʵʱ�뿪������������
�����������򵥵ķ�����������ʵʱ����Ƶ������
���������أ�֧�ְ��򼶷�˿������Facebookʵʱ��Ƶֱ����
������ʵʱ����Ƶ�����ж˵��˼��ܣ�E2EE���Ĺ���ԭ����
���ƶ���ʵʱ����Ƶֱ���������⣨һ������ƪ��
���ƶ���ʵʱ����Ƶֱ���������⣨�������ɼ���
���ƶ���ʵʱ����Ƶֱ���������⣨������������
���ƶ���ʵʱ����Ƶֱ���������⣨�ģ��������ͷ�װ��
���ƶ���ʵʱ����Ƶֱ���������⣨�壩�������ʹ�����
���ƶ���ʵʱ����Ƶֱ���������⣨�������ӳ��Ż���
��������ϵʵ�ʣ�ʵ��һ���򵥵ػ���HTML5��ʵʱ��Ƶֱ����
��IMʵʱ����Ƶ����ʱ�Ļ�����������������
��dz̸ʵʱ����Ƶֱ����ֱ��Ӱ���û������ļ����ؼ�����ָ����
�������Ż�����������ʵ��ʵʱ����Ƶ�ij����ӳ٣���
���״���¶������������������������ͬ����ֱ�������뿪�Ҳ����ٵģ���
��ʵʱͨ��RTC����ջ֮����Ƶ��������
����Դʵʱ����Ƶ����WebRTC��Windows�µļ��������̳���
��Androidֱ������ʵ�������ִһ�׼򵥵�ֱ��ϵͳ��
>> ����ͬ������ ����

[9] IM�����ۺ����£�
���ƶ���IM�д���ģȺ��Ϣ���������α�֤Ч�ʡ�ʵʱ�ԣ���
���ƶ���IM������Ҫ���Եļ���������
������IM���Լ�����Э�����ֽ����û����ַ����ã���
����������֪��������������������ʵ�ַ�ʽ������
��IM��Ϣ�ʹﱣ֤����ʵ��(һ)����֤����ʵʱ��Ϣ�Ŀɿ�Ͷ����
��IM��Ϣ�ʹﱣ֤����ʵ��(��)����֤������Ϣ�Ŀɿ�Ͷ����
�����α�֤IMʵʱ��Ϣ�ġ�ʱ���ԡ��롰һ���ԡ�����
��һ���ͳɱ�ȷ��IM��Ϣʱ���ķ���̽����
��IM���ĺ�Ⱥ���е�����״̬ͬ��Ӧ���á��ơ����ǡ���������
��IMȺ����Ϣ���˸��ӣ����α�֤�������أ���
��̸̸�ƶ��� IM �����е�¼�������Ż���
���ƶ���IM��¼ʱ��ȡ������������ʡ��������
��dz̸�ƶ���IM�Ķ�����½����Ϣ����ԭ����
����ȫ���ѿ�����IM���������ơ�ʧ�����ԡ����ƣ���
��ͨ���׶������ڼ�Ⱥ���ƶ���IM�����㸺�ؾ��ⷽ��������
��΢�Ŷ�����Ӱ���ļ������鼰����������ȫ�ģ���
����ʱͨѶϵͳ��ԭ����������Ӧ�ã��������ģ���
����ԴIM���̡�Ģ����TeamTalk������״��һ����ʼ���յĿ�Դ����
��QQ�����Ŷӷ�����Android�е�ͼƬѹ���������⣨��ƪ����
��QQ�����Ŷӷ�����Android�е�ͼƬѹ���������⣨��ƪ����
����Ѷԭ������(һ)�����δ��������ƶ��������ֻ�QQ��ͼƬ�����ٶȺͳɹ�����
����Ѷԭ������(��)�����δ���ѹ���ƶ�������APP���������ģ���ƪ����
����Ѷԭ������(��)�����δ���ѹ���ƶ�������APP���������ģ���ƪ����
����Լ������΢�����õ��ƶ���IM��������ƽ̨������Mars����ʽ��Դ��
�������罻������Yelp������ʵ�ֺ����û�ͼƬ������ѹ���ģ���
>> ����ͬ������ ����

[10] ��Դ�ƶ���IM�����������ϣ�
����Դ�ƶ���IM��������MobileIMSDK������������
����Դ�ƶ���IM��������MobileIMSDK����������������
����Դ�ƶ���IM��������MobileIMSDK��ѹ�����Ա�����
>> ����ͬ������ ����

[11] �й����ͼ��������£�
��iOS�����ͷ���APNs���⣺����˼·������ԭ����ȱ�ݵ���
���Ÿ��Ŷ�ԭ����һ���߹� iOS10 ����Ϣ����(APNS)�Ŀ���
��Android����Ϣ�����ܽ᣺ʵ��ԭ�������������������������
��ɨä������ʶMQTTͨ��Э����
��һ������MQTTͨ��Э��������Android����Demo��
��IBM����������̸��MQTTЭ�����ƶ����̡���չ��״����
������android��Ϣ���ͣ�GCM��XMPP��MQTT���ַ�����������
���ƶ���ʵʱ��Ϣ���ͼ���dz����
��ɨä����dz̸iOS��Android��̨ʵʱ��Ϣ���͵�ԭ����������
�����Ըɻ�������Nettyʵ�ֺ������������ͷ�������Ҫ����
���ƶ���IMʵ�����ȸ���Ϣ���ͷ���(GCM)�о�������΢�ţ���
��Ϊ��΢�š�QQ������IM���߲�ʹ��GCM����������Ϣ����
����������ϵͳ����ģ�߲����ܹ��ļ���ʵ��������
����HTTP��MQTT��һ������λ�÷�����APP����ͨ��ʵ��������
������2500�������ӵ�ʵʱ��Ϣ���ͼܹ��ļ���ʵ��������
��ר�������ܹ�ʦ�����������ӵ�ʵʱ��Ϣ����ϵͳ���ĵ�������
������������Android��Ϣ��������С����
������WebSocketʵ��Hybrid�ƶ�Ӧ�õ���Ϣ����ʵ��(������ʾ��)��
��һ�����ڳ����ӵİ�ȫ����չ�Ķ���/���ͷ���ʵ��˼·��
��ʵ�����������ι���һ�׸߿��õ��ƶ�����Ϣ����ϵͳ����
��Go���Թ���ǧ�������ߵĸ߲�����Ϣ����ϵͳʵ��(����360��˾)��
����Ѷ�Ÿ뼼�����������ڼ�ʵʱ��Ϣ���͵�ʵս������
���������ߵ�����ֱ����Ļϵͳ��ʵʱ���ͼ���ʵ��֮·��
>> ����ͬ������ ����

[12] ���༴ʱͨѶ�������ķ��ࣺ
http://www.52im.net/forum.php?mod=collection&op=all

��ʱͨѶ�� - ��ʱͨѶ������������ ��Դ�� - ��ʱͨѶ������������

��һƪ���й� MINA 2.0 �����Ż��������򵥷�����һƪ��ѡNetty����Mina�������о����Աȣ�һ��

��������¼�����¼���ר��

�Ƽ�����
���� 3
�Ұ������ķ��������� ���� ������������logger.error������������ʾ��Ҫ����cast to logger����ָ��~
���ã�M_Kingsunx ������ 2016-02-24 18:01
�Ұ������ķ��������� ���� ������������logger.error������������ʾ��Ҫ����cast to logger����ָ��~

�Ǹ�logger��ʵ��Log4j��־���ܵ�ʵ�����������þ���������־���ѣ������ı�������System.out.println()�滻ֱ������������̨����һ��������
��лLZ��ԭ�����ˣ����������ԡ���
����¥�� ×
ʹ��΢�Ŵ��ͣ� ʹ��֧�������ͣ�

���ض���