游戏大厅 从基础开始(5)--绕回来细说聊天室(上)

论坛 期权论坛     
选择匿名的用户   2021-5-30 01:18   808   0
<div class="blogpost-body" id="cnblogs_post_body">
<p> </p>
<p>距离上次写大厅已经有几个月。中间工作繁忙,待学习的东西又很多,又有很多新产品的想法想实践,一直把这个坑闲置着。</p>
<p>直到前两天<a href="http://www.cnblogs.com/waynebaby/archive/2009/08/16/1546980.html">简单的树遍历枚举器-挑战一个程序员到底能多懒</a> 装配脑袋的几个回帖给我带来一些灵感,让我又重新看看我聊天频道的实现,发现竟然有很多可以推敲重新处理的地方。</p>
<p>昨天上班的时候又把聊天部分整理了下,愿和大家分享。</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<h2><a href="http://zh.wikipedia.org/wiki/%E7%B6%B2%E8%B7%AF%E8%81%8A%E5%A4%A9%E5%AE%A4">Wiki定义的聊天室</a></h2>
<p><strong>网络聊天室</strong>通常直称<strong>聊天室</strong>,是一种人们可以<a href="http://zh.wikipedia.org/w/index.php?title&#61;%E5%9C%A8%E7%BA%BF%E4%BA%A4%E8%B0%88&amp;action&#61;edit&amp;redlink&#61;1">在线交谈</a>的的<a href="http://zh.wikipedia.org/w/index.php?title&#61;%E7%BD%91%E7%BB%9C%E8%AE%BA%E5%9D%9B&amp;variant&#61;zh-cn">网络论坛</a>,在同一聊天室的人们通过广播消息进行实时交谈。</p>
<p>聊天室可以建立在<a href="http://zh.wikipedia.org/w/index.php?title&#61;%E5%8D%B3%E6%99%82%E9%80%9A%E8%A8%8A&amp;variant&#61;zh-cn">即时通讯</a>软件(如<a href="http://zh.wikipedia.org/w/index.php?title&#61;MSN_Messenger&amp;variant&#61;zh-cn">MSN Messenger</a>、<a href="http://zh.wikipedia.org/w/index.php?title&#61;QQ&amp;variant&#61;zh-cn">QQ</a>)、P2P软件、<a href="http://zh.wikipedia.org/w/index.php?title&#61;%E4%B8%87%E7%BB%B4%E7%BD%91&amp;variant&#61;zh-cn">万维网</a>(如 <a href="http://www.halapo.com/">Halapo</a>, <a href="http://www.meebo.com/">Meebo</a> ) 等基础上,<a href="http://zh.wikipedia.org/w/index.php?title&#61;%E4%B8%87%E7%BB%B4%E7%BD%91&amp;variant&#61;zh-cn">万维网</a>方式更为普通和种类繁多,交谈的手段不局限于文本,更包括语音、视频。通常聊天室是按照房间或频道为单位的,在同一房间或频道的网人可以实时地广播和阅读公开消息。一般情况下,与其它<a href="http://zh.wikipedia.org/w/index.php?title&#61;%E7%BD%91%E7%BB%9C%E8%AE%BA%E5%9D%9B&amp;variant&#61;zh-cn">网络论坛</a>、<a href="http://zh.wikipedia.org/w/index.php?title&#61;%E5%8D%B3%E6%99%82%E9%80%9A%E8%A8%8A&amp;variant&#61;zh-cn">即时通讯</a>不同的是,聊天室不保存聊天记录。</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<h2>聊天室的基础功能定义</h2>
<p><a href="http://images.cnblogs.com/cnblogs_com/waynebaby/WindowsLiveWriter/1183318035a6_122BE/ChatBasic.png"><img alt="ChatBasic" border="0" height="280" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-793691140380c771d937523972dffc99.png" style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;" title="ChatBasic" width="322"></a> </p>
<p>用户能够通过某种形式连接到服务, 发送自己的信息给同样使用该服务的多人看到,并且看到同样使用该服务的别人发送的信息。</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<h2>聊天室的行为</h2>
<p>一般的聊天室行为分为两种</p>
<p>“推” 和 “拉”</p>
<p> </p>
<h3>推聊天室</h3>
<p>推聊天室的行为接近一个中转点,或者说是一个广播站。</p>
<p><a href="http://images.cnblogs.com/cnblogs_com/waynebaby/WindowsLiveWriter/1183318035a6_122BE/ChatPush.png"><img alt="ChatPush" border="0" height="280" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-0442003b752e4766e8bc674ed6433c9f.png" style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="ChatPush" width="322"></a> </p>
<p>这种聊天室简单明确。</p>
<p>由于根本不需要保存信息 不会存在多个线程访问的临界数据,不会涉及到锁 也就不会产生相应的性能损耗。</p>
<p>缺点也显而易见,它仅仅支持服务器可以直接向客户端推送的连接(比如tcp, udp) ,http这种无连接的协议无法使用。如果是临时掉线,那么在重连前的所有数据也都全都接收不到。</p>
<p> </p>
<p> </p>
<h4>变形品种 点对点聊天室</h4>
<p><a href="http://images.cnblogs.com/cnblogs_com/waynebaby/WindowsLiveWriter/1183318035a6_122BE/ChatP2P.png"><img alt="ChatP2P" border="0" height="280" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-996114ff8b6e517549aba92fc22c6900.png" style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="ChatP2P" width="322"></a> </p>
<p>服务器把推送的义务转交给客户端。</p>
<p>这种方式对用户发送的内容控制力为0,如果不是tencent这种大牛 在伟大的社会主义初级阶段的和谐社会里 你执还意作这类点对点聊天室,建议请个好律师</p>
<p> </p>
<p> </p>
<p>另一种聊天室是</p>
<h3>拉聊天室</h3>
<p><a href="http://imag
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP