Ĭ��
���� �������� 0
�뿪��IM������Ʒ�¿ӣ�����3���¹����ҿ�Դ����ߣ������������·��... ��վ�����㽨��
IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�
΢��ɨһɨ��ע��

����������˵����������ԭ�⡰΢��Ⱥ�Ĺ��ܣ�ԭ�����������Ƶģ�������ʱͨѶ���������Ű��������Ż��ȡ�


1������


�������������ֻ������ں������ǵ�΢��Ⱥ�ﳩ���Ű������źͼ�����������ĩ�ƻ�ʱ����Ȼһ������ϲ������Ϣ������������Ϣ���м�д�Ű˸����֣���ϲ���ƣ��󼪴�����

IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_1.png

�������������Ŵ󲿷��˶Դ˶���İ����΢�ŵ�����Ⱥ��ϵͳ���Է��������졢����ͼƬ�ͱ��飬�����Ǹ������ĺ������ܡ�

΢����Ϊ 10 ���û�������ȫ�� App��΢�Ž�Ⱥ������΢���������ĵ�һ�������������Խ����ٸ����ѻ�İ���˷Ž�һ��Ⱥ�ռ䡣

IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_2.png

΢�ű���������IMȺ��ϵͳ����������ʵ�ֵ��أ���������һֱ�����ţ������Ҿ��������˽�һ�£�����΢�ŵ�Ⱥ��ϵͳ�����������������ġ�

IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_cover-opti.png

2��Ⱥ��ϵͳ����


2.1ϵͳ�ص��빦������


΢��Ⱥ�Ĺ������罻Ӧ�õĺ��Ĺ���֮һ���������û������Լ����罻Ȧ�ӣ������ˡ����ѻ���ͬ��Ȥ�����߽����Ѻõؽ�����

������΢��Ⱥ��ϵͳ�ĺ��Ĺ��ܣ�
IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_3.png

������˵���ǣ�

  • 1������Ⱥ�����û����Դ����µ�����Ⱥ�飬�������������û���������İ���������潨Ⱥ��
  • 2��Ⱥ��������Ⱥ���͹���Ա�ܹ�����Ⱥ��Ա�����ù�����Ȩ�ޣ�
  • 3����Ϣ���ͺͽ���������Ⱥ��Ա�����ı���ͼƬ����Ƶ����Ƶ�ȶ������͵���Ϣ�������͸�����Ⱥ��Ա��
  • 4��ʵʱͨ������ϢӦ���ܹ����ٴ��ݣ�ȷ��ʵʱ������
  • 5�����������û���Ⱥ���з������������ͽ����ĺ�����Ⱥ��Ա�����������������ĺ�����

2.2�ǹ���������Ӧ�Ը߲����������ܡ������洢��


���������� 10 ��΢���û�ÿ�춼����ʹ�ý�Ⱥ���ܵ��龰ʱ������Ҫ��������ģ���û�����������������ϵͳ�ķǹ���������

��Ҫ�������·��棺

  • 1���߲�����ϵͳ��Ҫ֧�ִ����û�ͬʱ������ʹ��Ⱥ�飬��ȷ�����ӳٵ��û����飻
  • 2����������������Ϣ���ݡ���ʱ��Ӧ���������罻�Ĺؼ���
  • 3�������洢��ϵͳ��������չ���������û����ɵĺ�����Ϣ�ı���ͼƬ������Ƶ���ݡ�

3��Ⱥ�ĸ�Ҫ����


�ڸ�Ҫ�����У����ǿ�����ϵͳ�ĺ��������ͻ���ҵ���ĸ�Ҫ���ơ�

3.1��������


΢��Ⱥ��ϵͳ�У����漰�����º���������Э�飺
IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_4.png

�������ǣ�

  • 1���ͻ����������ֻ��� PC ��΢��Ⱥ�ĵ���Ϣ����ʵʱ��������̨��������
  • 2��Websocket����Э����֧�ֿͻ��˺ͺ�̨�����˵�ʵʱ�����������ͣ�ʵʱ�Ըߣ�������΢�š�QQ �� IM ϵͳͨ��ϵͳ��
  • 3�������Ӽ�Ⱥ�����ͻ��˽��� Websocket �����ӵ�ϵͳ��Ⱥ��������Ϣͨ���м���ת����Ӧ�÷�������
  • 4����Ϣ������������Ⱥ���ṩʵʱ��Ϣ�Ĵ����������������ݴ洢����ѯ�������ݿ⽻���ȣ�
  • 5����Ϣ���ͷ�������Ⱥ��������Ϣ����תվ����������Ϣ���ݸ���ȷ��Ⱥ����Ա��
  • 6�����ݿ���������Ⱥ�����ڴ洢�û��ı����ݡ�ͼƬ������ͼ������ƵԪ���ݵȣ�
  • 7���ֲ�ʽ�ļ��洢��Ⱥ���洢�û�ͼƬ������Ƶ���ļ����ݡ�

3.2ҵ����Ҫ����


Ⱥ�Ĵ�����Ҫ�漰������Щ�£�

1��ΨһID���������û����󴴽�һ����Ⱥ��ʱ��ϵͳ����һ��Ψһ��Ⱥ�� ID��ͨ������ʹ�÷ֲ�ʽ ID ��������ѩ���㷨��Snowflake����ֱ��ʹ�����ݿ����� ID����������Ϊ��ʵ�ּ��㣬���� MySQL ������ ID��

PS����ʵIM����ϢID������Ҳ�Ǹ������ŵļ����㣬����Ȥ�����Ķ����������£�


2��Ⱥ����Ϣ�洢����Ⱥ�� ID ��������Ϣ������Ⱥ���������� ID �����洢��Ⱥ�����ݿ��С�

3����Ա��������Ⱥ������ΪȺ���Ĵ�ʼ��Ա��ͬʱ������Ҳ����Ϊ����Ա��

4����Ϣ��ʷ��¼��Ϊ��ȷ���³�Ա�ܹ�������ǰ����Ϣ��������Ⱥ����Ⱥ�� ID ���û���Ϣ�����洢��

���������ѽ�Ⱥ��΢�Ż�ʵ���������潨Ⱥ��������

����������������̽���������ĸ����Ĺ��ܵ���ϸ���ƣ����������潨Ⱥ����Ϣ���������ռ����������ܡ�

4�������潨Ⱥ����


4.1����


�û����������潨Ⱥ��������һ�� 4 λ���������룬��Χ���û����������������ɼ���Ⱥ�ģ������潨Ⱥ����ͨ���漰���ݱ����ƺͺ���ҵ�񽻻����̽���������С������ϸ�������ۡ�

4.2���ݿ�������


�漰��Ⱥ�ĵ���Ҫ���ݿ����У�

  • 1��User �����洢�û���Ϣ�������û� ID���dzơ�ͷ���ȣ�
  • 2��Group �����洢Ⱥ����Ϣ������Ⱥ ID��Ⱥ���ơ������� ID��Ⱥ��Ա�����ȣ�
  • 3��GroupMember ���������û���Ⱥ�飬�����û� ID ��Ⱥ ID��
  • 4��RandomCode �����洢�����潨Ⱥ���������͹�����Ⱥ ID��

4.3����ҵ�񽻻�����


IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_5.png

�û� A ���ֻ���Ӧ���з��������潨Ⱥ��������һ�������룬У��ͨ���󣬵ȴ���Χ��50 ��֮�������û����롣��ʱ��ϵͳ���û���Ϣ�� HashMap �ķ�ʽ���뻺���У������ù���ʱ��Ϊ 3min��
{�����룬�û��б�[�û�A(ID�����ơ�ͷ��)]}

�û� B ����һ���ֻ��˷��������潨Ⱥ������ָ���������룬�������û���Χ�������������룬������ͬһ��Ⱥ�ĵȴ�ҳ�棬�����Կ�������ȺԱ��ͷ�����dz���Ϣ��

��ʱ��ϵͳ���˸�����������ȡ�����û���Ϣ��Ҳ��ʵʱ���»��������û���Ϣ��

IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_6.png

����һ���û�����������Ⱥʱ���Ϳ��Լ���Ⱥ�ģ�ϵͳ�����ɵ������뱣���� RandomCode ���У����������´�����Ⱥ ID������Ⱥ��Ա�ĸ�����

Ȼ����ϵͳ���û���Ϣ�������ɵ�Ⱥ����Ϣ�洢�� Group��GroupMember ���С�

4.4��Ա���룬ˢ��ȺԱ��Ϣ


֮����B��C �û���������������Ⱥ��ʱ���ֻ��ͻ��������������˷�����������֤�������Ƿ���Ч��������������֤�����룬�����������Ƿ������ڻ����У��Լ��Ƿ�����Ч���ڡ�

Ȼ�����жϵ�ǰȺ��Ա�Ƿ���Ա��Ŀǰ��ͨ�û�������Ⱥ����������Ϊ 500 ������������֤ͨ�������������˽��û� B��C ���ӵ�Ⱥ��Ա�� GroupMember �У������سɹ���Ӧ��

�ƶ��ͻ���Ӧ���յ��ɹ���Ӧ�󣬸����û� B��C ��Ⱥ���б���չʾ�����Ѽ�������Ⱥ�ġ�

4.5������������


�������û� A ͨ����������������Χ���û�ɨ����ά���ķ�ʽ�ɹ�������һ�������潨Ⱥ�����������漰�˶������������������ֲ�ʽ���桢���ݿ⡢��ά�����ɺ���֤�ȡ�

ͬʱ���������潨Ⱥ�Ĺ������൱��Ҫ�������DZ�ʶ�û������򣬱��� 50 �����ڡ����������õ� Redis �� GeoHash �㷨������ȡһ����Χ�ڵ������û���Ϣ��

5�� Ⱥ����Ϣ��������������


5.1����


��ij����Ա��΢��Ⱥ�﷢�ԣ�ϵͳ��Ҫ������Ϣ�ķַ���֪ͨ������Ա���Լ�ȷ����Ϣ����ʾ����������һ���ܵ���ϸ�������裬�Լ����ݿ��洢������

5.2��������


��Ϣ���ͺͽ���ʱ��ͼ���£�
IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_7.png

�������ǣ�

1���û�A��Ⱥ�з���һ������ͼƬ����Ƶ����Ƶ����Ϣ��

2���ƶ��ͻ���Ӧ�ý���Ϣ���ݺ�ý���ļ��ϴ������������ˡ�

3�����������˽��յ���Ϣ��ý���ļ��󣬽���Ϣ���ݴ洢�� Message ���У�ͬʱ��ý���ļ��洢���ֲ�ʽ�ļ��洢��Ⱥ�С��� Message ���������¼��ý���ļ��� MediaID���Ա�������Ϣ��ý�壻����¼������ͼ����Ƶ����ͼ�ȵȡ�

4�����������˻�������Ⱥ��Ա�㲥������Ϣ���ƶ��ͻ���Ӧ�ý��յ���Ϣ�󣬻�������Ϣ���ͣ��ı���ͼƬ����Ƶ����Ƶ�����ض�Ӧ��չʾ��ʽ��

5�����û������鿴ͼƬ����Ƶ����Ƶ����ͼʱ���ͻ���Ӧ�û����� MediaID �������洢��Ⱥ�л�ȡ��Ӧ��ý���ļ�·����������չʾ���û���

��������ȷ������Ϣ��ý���ļ�����Ч�洢��չʾ���û������ϴ��Ͳ鿴�������͵�ý�����ݣ�������������ͨ������ Message �Ͷ����洢�������е���Ϣ��ʵ������Ч����Ϣ�洢��չʾ��

5.3��Ϣ�洢��չʾ


��΢��Ⱥ�б�����չʾ�û���ͼƬ����Ƶ����Ƶ���ݣ�ͨ����Ҫ�������ݴ洢��չʾ���������ơ��������������潨Ⱥ�������ᵽ���û�����Ⱥ�������⣬����Ҫ���±��ṹ��

���磺

1��Message���� ���ڴ洢��Ϣ��ÿ����Ϣ����һ��Ψһ�� MessageID����Ϣ���ͣ��ı���ͼƬ����Ƶ����Ƶ������Ϣ���ݣ����֡�ͼƬ����ͼ����Ƶ����ͼ������������ UserID������Ⱥ GroupID������ʱ�����ֶΡ�

2��Media���� �洢�û��ϴ���ͼƬ����Ƶ����Ƶ��ý�����ݡ�ÿ��ý���ļ�����һ��Ψһ�� MediaID���ļ�·�����ϴ��� UserID���ϴ�ʱ�����ֶΡ�

3��MessageState���� ���ڴ洢�û���Ϣ״̬������ MessageID���û� ID���Ƿ��Ѷ��ȡ�����Ϣ����ʱ��ͨ�����ű�����δ������ͳһ���͸��û������������û����ֻ���չʾһ��С���ִ�����Ϣδ������

����֪����MySQL ÿ�β�ѯ select count ���͵�����ʱ�����ᴥ��ȫ��ɨ�裬����ÿ�μ�����Ϣδ������������

Ϊ�˲�ѯ���ܿ��ǣ����ǿ��Խ��û�����Ϣ�������� Redis����ʵʱ��¼һ��δ����ֵ�����ң���δ�������� 99 ʱ���ͽ�δ����ֵ��Ϊ 100 �Ҳ������ӡ�

�������û���Ϣʱ��ֻҪδ����Ϊ 100���ͽ�������Ϣ������Ϊ 99+���Դ��������洢�����ܺͽ�����Ч�ʡ�

6�� Ⱥ���е�����������


6.1����


���������������û���Ⱥ���з������������ͽ����ĺ�����Ⱥ��Ա�����������������ĺ�������Ҫ��֤ÿ���û��ĺ������С�� 0.01 Ԫ��

IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_8.png

����������ϸ�����������£�

  • 1���û����յ�������֪ͨ������֪ͨ����Ⱥ��ҳ�棻
  • 2���û���������������̨������֤�û��ʸ���ȷ���û���δ��ȡ���˺�����
  • 3�����û��ʸ���֤ͨ������̨����������������洢��ȡ��¼��
  • 4���û���΢��Ⱥ�п�����ȡ�������״̬����Ϊ������ȡ����
  • 5���첽����֧���ӿڣ��������������µ�Ǯ���

������������Ҫ��ע�����������ݿ����ƣ�������ʵʱ�Ժͺ��������㷨��

6.2���ݿ�����


������ redpack ���ֶ����£�

  • 1��id�� ����������ID��
  • 2��totalAmount�� �ܽ��
  • 3��surplusAmount�� ʣ�����
  • 4��total�� ����������
  • 5��surplusTotal�� ʣ������������
  • 6��userId�� ���������û�ID��

�ñ�������¼�û����˶��ٺ������Լ���Ҫά����ʣ�����

������¼�� redpack_record ���£�

  • 1��id�� ��������¼ID��
  • 2��redpackId�� ����ID��������
  • 3��userId�� �û�ID��
  • 4��amount�� �����Ľ��

��¼�����������û����������ĺ�����Ϣ��Ҳ�Ǻ������ĸ�����

6.3ʵʱ��


�������IJ��裺

  • 1���û����ú������ܽ����͸��������ں�����������һ�����ݣ���ʼ��������
  • 2��Ϊ�˱�֤ʵʱ�Ժ���������Ч�ʣ��� Redis ������һ����¼���洢���� ID �������� n��
  • 3����������Ϣ���͸�����Ⱥ��Ա��

�� 2015 ������΢�ź������������Ͳ������ͷ����ˣ��û���������������Ҫ�������β�������Ҳ��Ϊʲô������ʱ�������˺������㿪��ȴ���ָú����Ѿ�����ȡ���ˡ�

IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_9.png

�������Ľ����������£�

  • 1������������������ Redis ���������ɣ�ͨ��ԭ�ӵݼ��IJ��������º����������� 0 ����˵�������ˣ�
  • 2����������������ʱ�����Ȼ�ʵʱ�������һ����ͨ��������ֵ��ʵ�֣��� 0.01 ��ʣ��ƽ��ֵ�� 2 ��֮�䣩��
  • 3��������¼���û���ȡ������������ͨ�����ݿ������������ۼ��Ѿ���ȡ�ĸ����ͽ�������º������ͼ�¼����
  • 4��ת����Ϊ������Ч�ʣ����յ�ת��Ϊ�첽��������Ҳ��Ϊʲô�ڴ����ڼ䣬������ȡ�����������������п�����ԭ����

6.4���������㷨


������������ʱ���������������䣬����������ʵ�ַ�����

  • 1��ʵʱ���֣�
  • 2��Ԥ�����ɡ�

6.4.1��ʵʱ���֣�

ʵʱ���֣�ָ������������ʱʵʱ����ÿ�������Ľ����ʵ�ֺ����IJ��ֹ��̡�

������Ҫ��������һ���õIJ����㷨���ú�������ʱһֱ��֤���������ֺ����Ľ����Ϊ�ա�

ʵʱ����ʱ���������������ֵĺ�������������̬�ֲ����ɡ�

6.4.2��Ԥ�����ɣ�

Ԥ�����ɣ�ָ�����ں�������֮ǰ�Ѿ������˺����Ľ������֣�������ʱֻ������ȡ�����ֺõĺ������

���ַ�ʽ�Բ����㷨Ҫ���ϵͣ����Բ��ֳ������Ժܺõĺ��������ͨ����Ҫ���϶���ʹ�ã�������Ҫ������һ�������洢�����IJ��ֽ��

6.4.3��������ֵ����

�ۺ�������ȱ�㿼�ǣ��Լ�΢��Ⱥ���е��������ࣨĿǰ���� 500 �������������Dz���ʵʱ���ֵķ�ʽ���ö�����ֵ������������������ֻ�����������ɣ�����Ҫ��̬�ֲ���

�ʿ��ܳ��ֺܴ��ĺ�������������̼�������🐶������

ʹ�ö�����ֵ�����ɵ���������ÿ�������������� 0.01 ~ ʣ��ƽ��ֵ*2 ֮�䡣

���赱ǰ����ʣ������Ϊ 10 Ԫ��ʣ������Ϊ 5��10/5 = 2������ǰ�û����������ĺ�������Ϊ��0.01 ~ 4 Ԫ֮�䡣

6.4.4���㷨�Ż�

�ö�����ֵ�����ɵ�����������Ȼ�ӽ�ƽ��ֵ����֮ǰ����ij��̳�Ͽ��������Ƶ�˵����΢�ź��������������Ժ���ȡ��ʱ���й�ϵ�������ǽ���ߵ������¡�

���ǣ�С❤�ķѾ�����΢��Ⱥ���˶����������ó�������һ�����ۣ����������� �����ܶ� = ������*0.01 + 0.01�����磺���� 4 ���������ܶ�Ϊ 0.05��������һ������ȡ�ĺ�������һ���� 0.02��

IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_10.png

��һ���⣺
IM�����ɻ���������������΢�ŵ�Ⱥ�ģ�������ô���ƣ�_11.png

���ԣ����������㷨�����ʲ����������䣬�������ɷ�����֮ǰ�Ѿ����˴����������ں�����������ǰ��������һ�������ڵĺ����������������ܶ�Ϊ 0.01 * ����������

���ں�������������ʱ�򣬻���ÿ������������ֵ�����ϼ��� 0.01���Դ�����֤ÿ����������Сֵ��Ϊ 0��

���ԣ������û������ܶ�Ϊ 0.04 �ĸ���Ϊ 3 �ĺ���ʱ����Ҫ����ȡ 3*0.01 �� "���ĸ�" �����ڵĺ������棬���ǵ�һ���������ĺ�������ֵ�� 0 ~ (0.04-3*0.01)/3��

���ڵ��ĺ���������Գ�������������ȡ��λС����0 ~ (0.04-3*0.01)/3 ==> (0 ~ 0) = 0���ټ���֮ǰ��ȡ�ı���ֵ 0.01������ǰ���������ĺ�������� 0.01������һ�������Ľ���Ϊ��������� 0.02��

�㷨�߼��� Go ����ʵ�����£�
import (
   "fmt"
   "math"
   "math/rand"
   "strconv"
)

type RedPack struct {

    SurplusAmount float64 // ʣ������

    SurplusTotal int // ����ʣ������

}

// ȡ��λС��
func remainTwoDecimal(num float64) float64 {

    numStr := strconv.FormatFloat(num, 'f', 2, 64)

    num, _ = strconv.ParseFloat(numStr, 64)
    return num
}

// ��ȡ���������ĺ���
func getRandomRedPack(rp *RedPack) float64 {
    if rp.SurplusTotal <= 0 {
        // �ú����Ѿ���������
        return 0
    }

    if rp.SurplusTotal == 1 {
        return remainTwoDecimal(rp.SurplusAmount + 0.01)
    }

       // ����ȡ��
    avgAmount := math.Floor(100*(rp.SurplusAmount/float64(rp.SurplusTotal))) / float64(100)
    avgAmount = remainTwoDecimal(avgAmount)

       // ��������������
    rand.NewSource(time.Now().UnixNano())

    var max float64
    if avgAmount > 0 {
        max = 2*avgAmount - 0.01
    } else {
        max = 0
    }
    money := remainTwoDecimal(rand.Float64()*(max) + 0.01)

    rp.SurplusTotal -= 1
    rp.SurplusAmount = remainTwoDecimal(rp.SurplusAmount + 0.01 - money)

    return money
}

func main() {
    rp := &RedPack{
        SurplusAmount: 0.06,
        SurplusTotal:  5,
    }

    // ÿ�������ȱ��� 0.01 ������

    rp.SurplusAmount -= 0.01 * float64(rp.SurplusTotal)
    total := rp.SurplusTotal
    for i := 0; i < total; i++ {
        fmt.Println(getRandomRedPack(rp))
    }
}

��ӡ������
0.01��0.01��0.01��0.01��0.02

����Ԥ�ڣ�

PS����һƪ���罻����������������(ʮһ)������΢�ź��������㷨(������ʵ��)����Ҳ����һ���Ķ���

7�� ������


΢��Ⱥ�ļ��������ȹ��ܱ����̲��Ÿ��ӵĽ��������;������ƵIJ�Ʒ���飬ͨ����Щ�������������ݿ�������ϸ�Ľ������̣����û��ܹ����ɲ��벢����Ⱥ��ϵͳ�����ı�����

���ң���������Щ����Ȥζ�Ĺ��ܣ�Ҳ��΢���û��ڶ���ԭ��֮һ�ɣ�

΢�Ž�Ⱥ���ܵ�ϵͳ���Ʋ�������һ������׳����չʾ�����������罻��ħ��֮һ��

8�� �����


[1] IM���ĺ�Ⱥ���е�����״̬ͬ��Ӧ���á��ơ����ǡ�������
[2] IMȺ����Ϣ���˸��ӣ����α�֤�������أ�
[3] �ƶ���IM�д���ģȺ��Ϣ���������α�֤Ч�ʡ�ʵʱ�ԣ�
[4] IMȺ����Ϣ�����Ǵ�1��(����ɢ��)���Ǵ�����(����ɢд)��
[5] һ�׸߿��á����������߲�����IMȺ�ġ����ļܹ���������ʵ��
[6] �������ż���������IM�е�����Ⱥ�ļ�������ʵ���ܽ���
[7] ���ﶤ��������������ҵ��IM���ߡ��������ں��˼ܹ��ϵĹ���֮��
[8] IMȺ����Ϣ���Ѷ�δ�������ڴ洢�ռ䷽����ʵ��˼·̽��
[9] ֱ��ϵͳ���켼��(��)����������IM��Ϣƽ̨����Ⱥ�ġ�ֱ�������µļ���ʵ��
[10] ֱ��ϵͳ���켼��(��)��ֱ���亣��������Ϣ�ļܹ������ѵ�ʵ��
[11] ��ҵ΢�ŵ�IM�ܹ����ƽ��أ���Ϣģ�͡�����Ⱥ���Ѷ���ִ����Ϣ���ص�
[12] ����IM��������������Ⱥ����ϢͶ�ݷ�����˼����ʵ��
[13] ʵʱ��Ⱥ����ר��(һ)��֧�ְ����˳���Ⱥ�ģ�һ�Ķ�����Ⱥ��ƷDiscord
[14] �罻����������������(һ)��ȫ������QQ�����������������ܹ�������ʵ�ֵ�
[15] �罻����������������(ʮһ)������΢�ź��������㷨(������ʵ��)

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

��һƪ������IM�����ع�ʵ������ҵ΢��Android�˵��ع�֮·��һƪ��΢���Ŷӷ�����������΢��ʮ��ǰ��IM��Ϣ�շ��ܹ�������������

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

�Ƽ�����
����¥�� ×
ʹ��΢�Ŵ��ͣ� ʹ��֧�������ͣ�

���ض���