要说这个“奾奿聊天室”,那得从我那会儿在家闲得蛋疼说起。那阵子刚换了个工作,中间空档期,也没啥项目催着,每天除了吃饭睡觉就是发呆。就是闲不住,手痒痒。
我寻思着,现在外头那些聊天软件,要么功能一大堆用不上,要么广告多得烦人,再不就是界面花里胡哨的,看着就累。我当时就想,要不自己整一个?就那种干干净净,能发字就行,最多加个表情,没了。想着就简单,结果嘛嘿
起心动念,先整后端
我这人做东西,习惯性先搭骨架。我琢磨着要用啥语言。Java,太重了,跑起来得烧我那老旧的笔记本;PHP,又觉得有点过时了,虽然我以前也用过不少。寻思来寻思去,正好之前听说*这玩意儿搞实时通讯挺溜的,那就它了。前端后端一把抓,省事。
说干就干,我先是把*环境装上,然后就去找那个什么*的库。以前没用过这玩意儿,只知道是个发消息的。捣鼓了半天,才知道它这玩意儿就是把好多复杂的东西都给包起来了,你只要知道怎么发怎么收就行。我照着官网的教程,先把服务跑起来,一个简单的“Hello World”一发一收,我就觉得这事儿有戏。
数据库,我也没想太复杂。当时就想,要不就用个文件存存日志得了,反正聊天记录丢了也不要紧。后来想了想,万一我聊得开心,想看看之前说了啥?那就得有个库。MongoDB以前玩过,挺灵活的,存啥都行。我就又给它装上,把基本的消息存取给弄就这么,后端一个能收发消息,能存日志的服务就跑起来了。
前端界面,搞得我头大
后端跑起来,前端就得跟上。对美工那是一窍不通。什么设计感,什么配色方案,在我这儿都是浮云。我就想着,一个大白框,上面显示聊天记录,下面一个输入框,旁边一个发送按钮,齐活!
我从最基础的HTML文件开始敲,一个`
最要命的是JavaScript。要让前端和我的*后端连起来,就得用*的客户端库。我把那个JS文件一引,然后就开始写连接、监听、发送消息的代码。这中间可把我累坏了,消息发出去没反应,收回来格式不对,老是报错。我对着浏览器控制台的报错信息,一个字一个字地查,有时候一个小括号没闭合,有时候一个变量名写错了。折腾来折腾去,总算是能实现:我在输入框里打字,一点发送,后端就收到了,再原封不动地发给所有连接的用户,然后每个人的页面上就能显示出来。
刚实现这功能的时候,我那个高兴劲儿,就跟过年似的。我老婆在一旁看着,一脸懵逼地问我:“你就弄个这?这有啥用?”她哪里懂我一个程序员的快乐!
遇到问题,解决问题
跑起来是跑起来了,但问题也来了。比如,我发的消息,在自己的页面上会显示两遍。后来才发现,我是先发到后端,后端再广播回来,我自己的客户端又收到了,于是就显示两次。我赶紧改了逻辑,变成自己发的消息,直接在本地显示,然后才发给后端去广播给别人。
还有就是用户身份。一开始我没管这些,大家发消息都一个样,没法区分是谁说的。后来我觉得不行,至少得有个昵称。我就在连接的时候,让用户输入一个昵称,然后每次发消息的时候,把昵称也带上。这样,聊天记录就变成了“XXX说:你”看着就正规多了。
再后来想着如果有人掉线了,或者新加入了,大家能知道也挺我就又加了功能,只要有人连上或者断开,后端就给所有人广播一条消息:“XXX加入了聊天室”或者“XXX离开了聊天室”。就这么一点点加功能,这个“奾奿聊天室”才慢慢像个样子。
上线与后续
等我把这些基础功能都弄得差不多了,我就想着不能光自己玩。我找了个免费的云服务,把我的*后端一部署,前端文件一放,还真跑起来了。我把链接发给我几个哥们儿,让他们上去试玩。他们刚开始还以为我弄了个啥高科技,上去一看,就这?不过大家还是挺给面子的,上去聊了几句。
现在这个“奾奿聊天室”还在那儿挂着,虽然平时没几个人上去聊天,但它就像我的一个老朋友。每当我不开心或者想静静的时候,我就会打开它,看着里面的寥寥几条聊天记录。它提醒我,哪怕再简单的事,只要肯动手,总能弄出个名堂。而且这玩意儿还真挺纯粹的,想说啥就说没那么多套路。它可能不完美,但它是我一点点敲出来的,充满了我的“折腾劲儿”,这对我来说,就够了。


