首页 > 编程语言 >使用C#与Websocket完成简单的聊天功能

使用C#与Websocket完成简单的聊天功能

时间:2023-07-19 10:45:33浏览次数:41  
标签:Web HTTP Websocket C# WebSocket 聊天 服务器 浏览器 客户端

1、背景
WebSocket出现之前,Web端为了实现即时通讯,所用的技术都是Ajax轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。而比较新的技术去做轮询的效果是Comet , 但这种技术虽然可达到全双工通信,依然需要发出请求。

2、介绍
Web Sockets没有什么神奇之处,首先要意识到该协议本质上是一个基本的双工TCP/IP套接字连接。连接从客户端连接到远程服务器并将HTTP标头文本发送到该服务器开始。标头文本要求Web服务器将连接升级为Web套接字连接。这是作为握手完成的,Web服务器使用适当的HTTP文本标头进行响应,从那时起,客户端和服务器将使用Web Socket语言。

3、WebSocket 技术概览
在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送,改变了原有的B/S模式。WebSocket的技术原理:

 

 

WebSocket的技术原理:

 

 

4、C# websocket及时通信协议的实现
Websocket有java、nodejs、python、PHP、等版本 ,哪些浏览器支持websocket:

 

 

我现在使用的是C#版本,服务器端是Fleck。客户端和服务器端来使用websocket的,下面开始讲解如何使用:

接下来我们使用的是C#控制台程序来实现

1.首先创建一个控制台应用程序,然后引入Fleck包

 

 

2.Fleck是C#中的一个WebSocket服务器实现,以下是服务端实现代码,在服务启动后调用

 

3.接着创建一个Web应用程序

 

4.以下是客户端实现代码

接着让我们一起来看效果:

1.客户端发送消息到服务端

 

 

 2.服务端发送消息到客户端

 

原文链接:https://blog.csdn.net/hqwest/article/details/130651832

 

标签:Web,HTTP,Websocket,C#,WebSocket,聊天,服务器,浏览器,客户端
From: https://www.cnblogs.com/tianxc66/p/17564906.html

相关文章

  • 关于@RequiredArgsConstructor使用
    1.Lombok官方解释:@RequiredArgsConstructor为每个需要特殊处理的字段生成一个具有1个参数的构造函数。所有未初始化的final字段都会获取一个参数,以及标记为@NonNull的任何字段,这些字段在声明它们的位置未初始化。对于那些标有@NonNull的字段,还会生成显式空检查。如果用于标......
  • tomcat中conf目录中一些文件介绍
     tomcat中conf目录中一些文件说明server.xml文件:该文件用于配置和server相关的信息,比如tomcat启动的端口号、配置host主机、配置Contextweb.xml文件:部署描述文件,web.xml文件有两部分:Servlet类定义和Servlet映射定义。这个web.xml中描述了一些默认的servlet,部署每个webapp时......
  • [转] C# SuperSocket 手把手教你入门 傻瓜教程 7~8
    7(自定义CommandLineProtocol---命令行协议) 目录一、前言二、创建一个自定义命令行协议的工程项目三、安装SuperSocket和SuperSocket.Engine 1、进入【管理NuGet程序包】2、安装SuperSocket3、安装SuperSocket.Engine四、自定义AppSession类1、工程项目中添加一个自定......
  • 【Javascript】数组扩展方法:根据key重新分组
    1//数组扩展:根据key重新分组2//field:按什么字段分组3Array.prototype.GroupByKey=function(field)4{5varoriginalArr=this6lettempArr=[]7letresultData=[]8for(leti=0;i<originalArr.length;i++)9{10......
  • react-native 调用手机自带分享
    实现效果 importSharefrom'react-native-share'importViewShotfrom'react-native-view-shot'constshotRef=useRef<ViewShot>(null)constgetTime=()=>{returnnewDate().getTime().toString()}constOnShare=()=&g......
  • tomcat中各目录文件用途
     查看tomcat目录   各目录文件用途 tomcat     |---bin:存放启动和关闭tomcat执行脚本;     |---conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml;     |---lib:存放Tomcat运行需要的库文件(jar),包含Tomcat使用的jar文件。unix平......
  • [未解决] vue transform-blocks解析源代码报错:Illegal tag name. Use '<' to print '<
    报错内容:[vite]Internalservererror:Illegaltagname.Use'<'toprint'<'.用的是这篇博文的源代码展示方法:如何用vite的vueCustomBlockTransforms(自定义块转换)实现源代码展示使用时突然遇到某一个vue文件添加<demo></demo>标签后报错,但其他vue文件可以正常读取和展示......
  • macOS 常用字体下载安装
    简介在使用Mac版本Office编辑文档时,经常会出现在Mac上的保存的文档放在Windows打开会出现字体扭曲、不整齐等现象。在MacOffice中的仿宋字体也会在WindowsOffice中显示为FangSong等现象。若安装过同名的字体,请删除并清空缓存后再行安装。安装首先下载好所需的字体在mac使......
  • Oracle11G扩展表空间
    转载自:https://www.qycn.com/xzx/article/13650.html这篇文章主要给大家介绍“Oracle增加表空间的方法及具体步骤是什么”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“Oracle增加表空间的方法及具体步骤是什么”......
  • 54.使用VUE3+VITE+TYPESCRIPT+element-plus的setup语法糖,实现导出excel功能
    要实现导出Excel功能,你可以使用以下步骤:1.安装相关依赖:```bashnpminstallxlsxfile-saver```2.在你的组件中引入相关依赖:```javascriptimport{ref}from'vue';import{saveAs}from'file-saver';import{useTable}from'element-plus';importXLSX......