• ESFramework Demo之iPhone版即时聊天


      这回我们做一下聊天功能,要实现此功能,我们要做两件事,第一,我们要先了解下聊天协议,第二,画一个能收发消息的UI界面。

      ok,我们开始吧,看一下聊天协议:

    00000000  FF FF C9 00 03 00 00 00  11 00 00 00 04 61 61 30   ?.... .....aa0 
    00000010  32 00 00 00 00 00 00 00  04 61 61 30 31 00 00 00   2....... .aa01... 
    00000020  00 00 00 00 0D 00 00 00  05 00 00 00 68 61 70 70   ........ ....happ 
    00000030  79 00 00 00 00                                     y....   
    

      上面的byte流,就是aa02用户发给aa01的一条消息,我们先看消息头所在的前36个字节,它的消息类型是0xC9即是十进制的201,MessageID为3,整个消息体的长度是0x11即十进制的17,好的,消息头都长的一样,我们只需记下与其它消息不同的MessageType为201就好,下面我们来看一下从索引位36处开始的消息体,0D 00 00 00这个int型的变量存储了描述文字消息的byte流长度,即在它后面的一个int型变量和一个string型变量所占的字节数,int型变理和string型变量分别描述聊天内容的长度和内容本身的字串。了解这些我们就可以看明白,上面的byte流中的聊天内容是happy,但在68 61 70 70 79后面为什么会多出来4个00,这个我开始是以为我写的聊天内容happy就5个字节可能会太短,协议对内容的长度有最少字节的限制要补全,但后来在我用iPhone连上去给win下的Client发消息时,怎么也不显示,只有加上这4个00才好用,这个我就没有看win下Client的代码关于这一块是怎么实现的,有兴趣的朋友可以自己看下其中的源码。  

      好,我们搞定了第一,现在来看第二,我们要画一个能收发消息的UI,有看上一篇关于在线列表实现的朋友知道,我在短时间里是做不出来一个漂亮UI的,漂亮UI真的需要时间,这里我用了acani 的开源项目 AcaniChat的UI,其地址在这里,在这里我向acani学长问好,接下来的事情只需我们依照发送登录请求和解析在线用户列表的方法便可完成任务,此处我不多废话了。

         下面是iPhone和Win下Client的消息截屏:

     

      这个Demo基本的功能都有了,但要想让它成为一个产品,要做的事情还有很多,像其他用户下线后要更新在线列表,消息推送等等,以后有时间我会把它细化和重构,比如把byte流分成MessageHead和MessageBody,消息处理那块搞个MessageDispatcher,MessageHandler什么的,先这样吧,以后有时间再搞,先把公司的项目做做好。

        小结下,通过完成这个iPhone版的Demo,我们对ESFramework的一些基本协议,有点了解,iPhone开发的一些常用组件也都见了。其实这些内容都不是很深入,看了个表面,在以后的日子里,还要踏踏实实的把基础的东西搞搞好,我会加油的。最后,我想说,一个人的能力是有限的,而无论是在学习还是在工作中,我们都需要同学和同事,如果大家对把这个Demo做成产品有兴趣,请和我联系upwifi@gmail.com,我们一起搞,到这里吧,下回见,多谢  

  • 相关阅读:
    kibana 设置登录认证
    elasticsearch
    elasticsearch安装ik
    elasticsearch 安装head
    Docker 数据卷之进阶篇
    link快捷方式
    动作方法中 参数,Json
    spring单元测试
    js之cookie操作
    idea快捷键
  • 原文地址:https://www.cnblogs.com/upwifi/p/2160147.html
Copyright © 2020-2023  润新知