我相信,有前面两篇的介绍,稍微熟悉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,这样,当一个客户端退出后,其他客户的界面中,相应的在线列表就能准备刷新了。

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

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

  

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

源码--可留言。

转载于:https://www.cnblogs.com/Charles-xu/p/4980966.html

基于.NET的WebSocket实例:在线聊天室相关推荐

  1. 基于Node.js + WebSocket 的简易聊天室

    代码地址如下: http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.j ...

  2. springboot+websocket构建在线聊天室(群聊+单聊)

    系列导读: 1.springboot+websocket构建在线聊天室(群聊+单聊) 2.Spring Boot WebSocket:单聊(实现思路) 3.Websocket Stomp+Rabbit ...

  3. SpringBoot与webSocket实现在线聊天室——实现私聊+群聊+聊天记录保存

    SpringBoot与webSocket实现在线聊天室--实现私聊+群聊+聊天记录保存 引用参考:原文章地址:https://blog.csdn.net/qq_41463655/article/det ...

  4. 基于Server-Sent Event的简单在线聊天室

    一.Web即时通信 所谓Web即时通信,就是说我们可以通过一种机制在网页上立即通知用户一件事情的发生,是不需要用户刷新网页的.Web即时通信的用途有很多,比如实时聊天,即时推送等.如当我们在登陆浏览 ...

  5. php+websocket实现在线聊天室(一)

    聊天室最终实现版:https://www.sinight.site/chatroom 可以自己多开几个窗口体验 前言:WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的 ...

  6. 基于Java语言的Web在线聊天室

    在线聊天室 能够实现登录,注册,聊天功能,最终效果如下图所示 注册页面 <%@ page language="java" contentType="text/htm ...

  7. SpringBoot 使用WebSocket打造在线聊天室(基于注解)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

  8. .NET Core 实现基于Websocket的在线聊天室

    什么是Websocket 我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯,但是在web体系是用不了socket通讯技术的,因为http被设计成无状态,每次跟服务器通讯完成后 ...

  9. websocket一直无法链接_.NET Core 实现基于Websocket的在线聊天室

    什么是Websocket 我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯,但是在web体系是用不了socket通讯技术的,因为http被设计成无状态,每次跟服务器通讯完成后 ...

  10. 基于WebSocket的在线聊天室

    1.什么是WebSocket HTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议.它基于TCP传输协议,并复用HTTP的握手通道.WebSocket是一种通信协议,可在单个 ...

最新文章

  1. mysql Sql slow log_MySQL慢查询日志(SLOW LOG)
  2. systemctl和service
  3. python 库列表_python库安装列表
  4. 在Spring-boot中,为@Value注解添加从数据库读取properties支持
  5. 优贝共享数据交易所网_2020.10.4号币圈简报:优贝兼职视界卖单积压,耀健康上涨...
  6. 瑞幸咖啡自曝虚假交易 22 亿,App 反冲 TOP 1
  7. 关于@Mapper注解的几个问题
  8. linux 用户管理和帮助命令
  9. 嵌入式系统常见的内存段
  10. docker hub加速访问hub.docker.com
  11. web项目下的web.xml listener监听总结
  12. [读书笔记]Linux命令行与shell编程读书笔记01
  13. Spring异步切面源码解析
  14. M3U8下载,直播源下载,FLASH下载(三)-直播源下载
  15. 网速1mbps是多少兆?
  16. 计算机导论课程知识总结,计算机导论课程论文
  17. 10 06 01 繁杂
  18. PS制作压印效果的logo等
  19. 洛谷 2197 nim游戏
  20. python中pip常用命令

热门文章

  1. 【flash基础】简单的 打飞机小游戏
  2. Unfolder for mac(3D模型展开工具)
  3. 羽毛球之双打反手发网前小球
  4. Windows Server 2012 R2 详细安装步骤
  5. 题目敌兵布阵-------线段树(单点修改查询,区间修改查询)
  6. 同事表白失败,我用Python帮他操作一波后直接步入热恋,不要偷偷收藏啊
  7. Linux学习路线及网络编程经典书籍(转载)
  8. 什么是中证主要指数?
  9. 农民工与劳务企业到底谁才是弱势群体?
  10. 终端不能联网_华北电力大学魏振华教授解析物联网安全防御的四个方面