zoukankan      html  css  js  c++  java
  • 基于.NET的WebSocket实例:在线聊天室

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

      我们先来总体规划一下我们的聊天室会有些什么功能吧(先列着,以后可能扩展):

      ① 登录聊天室

      ②向所有在线聊友广播消息

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

      ④ 退出聊天室

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

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

      ① 登录聊天室

      具体流程为:客户端和服务器建立连接后,客户端马上发送如下格式:

    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,这样,当一个客户端退出后,其他客户的界面中,相应的在线列表就能准备刷新了。

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

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

      

      这一篇就当是准备工作吧,下一篇,我们详细解说一下,登录的实现。

    源码--可留言。

  • 相关阅读:
    银行家算法实例(转)
    DNS中的七大资源记录介绍!(转)
    android之存储篇_SQLite数据库_让你彻底学会SQLite的使用(转)
    回顾HTML5的语义化元素
    vueJs2.0学习笔记(六)
    vueJs2.0学习笔记(五)
    vueJs的学习笔记(四)
    vueJs2.0学习笔记(三)
    vueJs的学习笔记(二)
    vueJs 2.0学习笔记(一)
  • 原文地址:https://www.cnblogs.com/Charles-xu/p/4980966.html
Copyright © 2011-2022 走看看