缘由
偶然有时间写写文章。
这个小实验起源是出于某个类似于面试题目。总之,是需要做完的,而做完之后不妨分享一下,肯定有很多不足,还请大家指正,交流。
要求大概说一下:
1.聊天室,需要有多个房间(channel或room)。
2.在房间中有禁言或者禁入的功能。
3.在客户端断网的情况下,恢复后可以重连到相应的房间。
4.c或c++,linux上实现。
https://github.com/LJNL/ChatServerAndChatRoom
先说缺点:
非正常退出的情况下,(比如ctrl+c):
服务端崩溃之后,客户端可以选择尝试重新连接,等服务器重启,即可继续。但服务端没有做持久化,服务器的数据(房间,客户信息丢失)。
客户端崩溃之后,服务端存有客户端信息,是不会清除的。由于客户端没有做持久化,即客户数据不会保存,因此服务端的资源还是被占用着。有人可能会说,那么我们在客户端崩溃的时候,清除一下资源不行吗?显然是可以的,但是作为服务端,很难分辨客户端是断网还是崩溃,断网时显然需要保持这份资源的。(注意很难只是个感叹词,也就是说,要做清理,先要搞个花招分辨一下两种情况,至于花招留给大家去思考了)。是否清理何时清理,留到持久化之后吧。
总之,看上面的要求,不难发现,持久化并不必要,所以有缘在做吧。
另外,感谢Sixzeroo提供的聊天室思路。