昨天写的博客设计方式、选择,今天为他补充一个用户评论的方式–即时消息

eChat是一个即时通信系统。基于SignalR,编程实现了一个B/S架构建立的网络聊天工具

即时通讯是互联网时代的产物,至于他的发展历史就不多赘诉了,知道比我年龄还大就完事了…

针对这类软件的开发需要解决三个问题:
一:全双工通信
即实现浏览器拉取(Pull)服务器数据,服务器推送(Push)数据到浏览器。
二:低延迟
也就是好比浏览器A发送给浏览器B的信息经过服务器要能够快速的发送给B;反之,也是一样。也就是要能够得到高效的交互。
三:支持跨域
使用中,我们与服务器所处的网络位置是不一样的。浏览器为了自身的安全考虑,不允许通过脚本直接访问不同域名下的服务器,IP 地址相同、域名不同不行;域名相同、端口不同也不行。


对于上述的问题,我们讲解下第一点(全双工通信)的解决方式

解决方案1:客户端浏览器轮询服务器。
这是最简单的解决方案!!原理呢就是客户端通过Ajax 的方式每隔一段时间就发送一个请求大服务器,服务器就返回最新的数据然后更新客户端消息,从而实现即时通信。
但是呢,这样长时间的访问服务器,会造成非常大的压力跟资源浪费。对于这处的问题,网上也有相对还行的优化处理,也可百度查查。

解决方案2:长轮询(Long Polling)。
该方案就是有对方案1进行优化:他是客户端发送一个请求到服务器,服务器会看客户端的数据是否发生了变化(也就是是不是最新数据),如果发生了变化,那个就传递新数据并相应;否则保持连接并继续检查最新数据,知道数据更新,或者连接超时这类特俗情况。(服务器阻塞,保持响应不返回,客户端轮询)
这样减少了服务器的压力,来回次数。(但治标不治本,他的主要还是方案1的思想。只是做了一点小优化)

解决方案3:基于 HTTP- stream 通信
原理上呢就是让客户端在一次请求中保持与服务器连接不断开,然后服务器源源不断的给客户端传送数据。就好比数据流一样,并不是一次性的把数据全部发送给客户端。
他与方案2的长轮询的区别就在于整个通信过程客户端只发送一次请求,然后服务器保持与客户端的长连接,并利用连接再回送数据给客户端。

解决方案4:服务器推送事件(Server-sent Events,SSE)
目的:为了解决浏览器只能单向传输数据到服务器的问题(HTML5的新技术)
实现&效果:能够实现客户端请求服务端,然后急用与客户端建立的这条通信连接给客户端传送数据,客户端接收并处理数据。实现了客户端与服务器的双向通信。
原理:在客户端构造一个 eventSource 对象,该对象具有 readySate 属性,分别表示为 0 (正在连接到服务器)、1 (打开连接)、2 (关闭连接)。
同时 eventSource 对象会保持与服务器的长连接,断开会自动重连,如果要强制断开,可以调用他的 Close 方法。关于他的监听 onmessage 事件触发时就能够接收到数据,从而进行相应的处理。

解决方案5:WebSocket。
这个技术是最有研究价值的一个了!
上边4中解决方案都是利用浏览器单向请求服务器或者服务器单向推送数据到浏览器技术组合在一起而形成的–hack 技术。
WebSocket 提供了浏览器与服务器之间原生的双工跨域通信,通过他们之间建立 WebSocket 连接(实际TCP连接),在同一时刻能够实现客户端到服务器和服务器到客户端的数据发送。
实现&效果:首先客户端新建一个 WebSocket 对象,该对象发送一个HTTP请求到服务端,服务端发现这是一个 WebSocket 请求 ,同意协议转化,发送回客户端一个 101 状态码的回复,(第一次握手)。握手后,客户端与服务端就建立了一条 TCP 连接,在该连接上,服务端与客户端可以进行双向通信。此时的双向通信在应用层用的是 WS 或 WSS 协议,与HTTP 没有关系。(WS与WSS可百度寻找,后边有空余也会更新篇文章写写。)

对于这些解决方案呢
个人感觉使用的话使用第二种较为简便
效果OK,也不Low
其他的可以测试测试,增长技术能力
第5种方式可以深入了解,我这写的较为简单了
然后对于HTTP的三次握手,四次握手的问题也不赘诉(有大佬的文章更详细)

这篇文章呢,结合自己理解,同时参考了
《基于.NET Core的高新能Web系统设计与开发技术》
王合闯 韩红玲 所著一书
对于这本书我的感觉还是不错的,有条件的朋友也可以去借阅或购买(我不是推销头子,哈哈)
这本书的主要适用人群呢,实在有一定能力,但是又还缺少一点设计思路与一般技术的人群。
不至于看不懂,又能增长知识!
**适合自己的才是最好了!**
好像结尾说的又有点多了,就到这吧
期待你的“一键三连” [嘿嘿]

即时消息服务器eChat相关推荐

  1. 即时消息服务器eChat 与 通信解决方案

    昨天写的博客设计方式.选择,今天为他补充一个用户评论的方式–即时消息 eChat是一个即时通信系统.基于SignalR,编程实现了一个B/S架构建立的网络聊天工具 即时通讯是互联网时代的产物,至于他的 ...

  2. “一切都是消息”--iMSF(即时消息服务框架)入门简介

    "一切都是消息"--这是iMSF(即时消息服务框架)的设计哲学. MSF的名字是 Message Service Framework 的简称,由于目前框架主要功能在于处理即时(im ...

  3. SCOM警报通知新特性:即时消息通知

    使用过SCOM的朋友应该了解,相对MOM,SCOM增加了"即时消息"和"短信"两种警报通知方式.今天我将给大家介绍其中之一,"即时消息"告警 ...

  4. “一切都是消息”--iMSF(即时消息服务框架)之【请求-响应】模式(点对点)...

    MSF的名字是 Message Service Framework 的简称,由于目前框架主要功能在于处理即时(immediately)消息,所以iMSF就是 immediately Message S ...

  5. 环境监控告警系统之TIM即时消息推送部署

    TIM是由腾讯发布的多平台客户端应用.TIM是轻聊的QQ,更方便办公.TIM用在QQ轻聊版的基础上加入了协同办公服务的支持,消息完全同步,支持多人在线编辑Word.Excel文档等,更加适合办公使用. ...

  6. 什么是即时消息(IM)?

    Instant Messaging is the act of sending short messages to other people in a fast and practical way v ...

  7. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(五) 之 加好友,加群流程,消息管理和即时消息提示的实现...

    前言 前前一篇留了个小问题,在上一篇中忘了写了,就是关于LayIM已经封装好的上传文件或者图片的问题.对接好接口之后,如果上传速度慢,界面就会出现假死情况,虽然文件正在上传.于是我就简单做了个图标替代 ...

  8. 【免费】小米即时消息云MIMC介绍——免费、简单实现IM

    前言 IM是互联网业务重要组成,很多场景下需要即时地.方便地交流.而实现IM较为复杂,需要后台提供连接.投递.存储.统计支持,人力成本和机器成本都很高.所以目前很多用户选择不自己实现IM功能,或者使用 ...

  9. 【IM】即时消息技术剖析与实战

    即时消息技术剖析与实战:10周精通IM后端架构技术点 https://time.geekbang.org/column/intro/225 目前有没有什么不错的开源IM项目可以学习和研究? 可以看看m ...

最新文章

  1. 成都有哪些牛逼的互联网公司?
  2. Career Essentials from Career Service
  3. mysql报错Attempted to open a previously opened tablespace的解决办法
  4. oracle 查看最大连接数与当前连接数
  5. JS 将图片编码BASE64
  6. 游戏设计规则探秘之提高动词的健壮性
  7. 计算机视觉实战(十二)全景图像拼接(附完整代码)
  8. 开心斗服务器维修要多久,大危机 《开心OL》史上最惨服务器开启?
  9. 零基础自学SQL课程 | UNION 联合查询
  10. 【转】区块链底层架构概览:第一原则框架
  11. 基于JavaEE的人力资源管理系统的设计与实现任务书与开题报告
  12. 手写个Tomcat雏型
  13. Cabbage教学(3)——数学计算和文件操作
  14. FM860-GI工业级摄像头安装驱动
  15. 原创 | 罗勇:立足敏捷开放,推动直销银行向智能银行迈进
  16. 易經大意(8) 三和 韓長庚 著
  17. vscode 单击跳转_vscode中ctrl+鼠标左键不能跳转_编程开发工具
  18. Github搭建个人博客(2019最新版,亲测)
  19. Cisco ASA防火墙实现IPSec 虚拟专用网,可跟做!!!
  20. 2023美赛E题程序建模思路

热门文章

  1. 八股文之linux常用指令
  2. TCP网络调试助手上提示错误:“1035 未知错误”的有效解决方法,本人实测确实可行
  3. MySQL数据库入门【最详细的入门教学】
  4. [OHIF-Viewers]医疗数字阅片-医学影像-安装问题
  5. python把四个图画在一个窗口_Python 多个图同时在不同窗口显示的实现方法
  6. 适合小程序定制的企业有哪些?
  7. 2021-03-10
  8. python使用SMTP发邮件时使用Cc(抄送)和Bcc(密送)
  9. SqlServer2005中数据库角色成员身份
  10. 《我要飞,永远都不会累 》---伤感留言