基于.NET的WebSocket实例:在线聊天室

我相信,有前面两篇的介绍,稍微熟悉socket程序设计的开发人员,应该彻底能自行设计出一个基于webSocket的在线交互系统了,趁着我如今还有几分热情,干脆写个完整的聊天室,就当是我为业内socket开发新手所做的一点小贡献吧。欢迎广大朋友对个人思路和代码拍砖,可以互相促进也就是个人愿望了。web

  咱们先来整体规划一下咱们的聊天室会有些什么功能吧(先列着,之后可能扩展):服务器

  ① 登陆聊天室socket

  ②向全部在线聊友广播消息spa

  ③ 针对某在线聊友发送消息,也即私聊设计

  ④ 退出聊天室code

  这四点,也即一个最简单的聊天室功能了,为此,我设计了一个简单的应用协议,先说明一下,为了可以更好的让你们理解,我就没用像前文的协议那样,节约字符了,相信聪明的你必定在真正设计时,不会像我如今这样的。blog

  我如今所说的协议,是针对咱们上节中DataFrame中的Text的内容,为知足客户端和服务器在聊天时的有效沟通而制定的,全部命令都是以3个字符的命令码开头,每条命令都有四部分组成:命令字,消息来源,消息去向,消息体,具体命令字定义以下:ip

  ① 登陆聊天室开发

  具体流程为:客户端和服务器创建链接后,客户端立刻发送以下格式:字符串

LIN,0,0,逍遥谷主

  LIN为登陆的命令码,逍遥谷主 为用户的昵称,也即在聊天室中,你显示的名字。

  登陆成功后,服务器会为你产生一个整形ID,同时向全部在线的客户端发出通知,有人登陆了,同时,也会将当前全部在线的客户信息,返回给你,这样,你一登陆,聊天室内全部人就知道你来了,同时,你也能知道,如今聊天室中有哪些人在线了。

  ② 发送消息

MSG,0,0,内容

  其中,第一个0,为发送方的ID,而第二个ID,即接收方的ID(大于0),若是你要广播给全部人,这个id设置为0便可。

  ③在线列表

OLN,0,0,在线id和姓名组合字符串

  第一个0,固定,表明服务器发来的,第二个0,在实际中是你本身的id

  ④退出聊天室

OUT,0,0,0

  第一个0即表明退出的客户端id,这样,当一个客户端退出后,其余客户的界面中,相应的在线列表就能准备刷新了。

  这条命令,原本后面两个零能够不要的,但为了统一格式,先留着吧,就当备用项,呵呵。

  要实现的界面效果,我就先借用咱们项目中的一个界面,之后再把内容填充好,你们先预览一下,这也算是咱们的目标了

  

  这一篇就当是准备工做吧,下一篇,咱们详细解说一下,登陆的实现。

 

源码--可留言。

相关文章
相关标签/搜索