我相信,有前面两篇的介绍,稍微熟悉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. 顺天则昌,逆天则亡(2006-03-13 21:07:17)(新浪)
  2. 滤波电容、去耦电容、旁路电容作用
  3. 体温高会折寿?温州大学学者发现体温比代谢率更会影响寿命,已在小鼠身上验证 | Nature子刊...
  4. 共建网络安全堤坝,守住网络安全底线
  5. jdk1.8新特性(四)——Optional
  6. 解决SQL映射文件的警告提示
  7. Operation not permitted - /usr/bin/xcodeproj
  8. (转)style,currentStyle,getComputedStyle的区别和用法
  9. 世界坐标系、相机坐标系、图像坐标系、像素坐标系
  10. Java 9 模块化(Modularity)
  11. 以本职工作为挡箭牌推托,久而久之,你就只能原地踏步。
  12. XCTF 华为云专场 qemuzzz
  13. SQL语句中EXISTS的使用详解及示例
  14. matlab进行数值积分的主要函数使用方法
  15. 热插拔机制之udev和mdev
  16. 新人!发个 电力信息化可研模板*
  17. CVE-2020-11100: HAProxy 内存越界写入漏洞通告
  18. 解决TCP网络传输粘包问题
  19. .net 开源CMS推荐
  20. 分布式实时计算课程学习(2.2)——Source API

热门文章

  1. ios app性能分析
  2. 解决pod时报错“Authentication token is invalid or unverified. Either verify it with the email that…”问题
  3. 关于局域网IPC入侵XP方法
  4. CentOs7查看防火墙
  5. 轮询任务调度和抢占式任务调度有什么区别
  6. sklearn中的SVM模型
  7. [附源码]JAVA+ssm计算机毕业设计仿咸鱼二手物品交易系统(程序+Lw)
  8. JavaScript基础实战知识点记录及个人理解2
  9. 微信小程序循环 wxfor、wxfor-item(s)区别与联系、data-xxx、wx-key使用
  10. Exchange Server 2013 运维系列——邮箱配额设置(管理中心)