C#使用WebSocket与网页实时通信的实现示例

作者:Three 时间:2023-02-15 01:22:24 

目的:使用Fleck框架实现网页与服务端实时通信

传统的网站采用http方式与服务端通信,属于请求响应模式,如何让网页与服务器之间能使用TCP这种双向通信方式实时交流,答案就是使用WebSocket技术。

Fleck框架的安装方式:

1、使用NuGet包管理工具安装

Install-Package Fleck -Version 1.2.0

2、下载Fleck源码并编译程序集供服务端引用

github地址:https://github.com/statianzo/Fleck/archive/refs/heads/master.zip

gitee地址:https://gitee.com/mylikekefu/Fleck/repository/archive/master.zip

直接在VS中打开项目,并生成fleck项目程序集

3、新建WebSocket服务端项目,命名WebSocketConsoleApp

4、引用程序集Fleck.dll

5、程序入口类编写服务端代码,如下所示:

static void Main(string[] args)
       {
           FleckLog.Level = LogLevel.Debug;
           var allSockets = new List<IWebSocketConnection>();
           var server = new WebSocketServer("ws://192.168.3.3:50000");
           server.Start(socket => {
           //客户端连接上服务端,则在socket列表添加一个客户端
           socket.OnOpen = () => {
               Console.WriteLine("Open!");
               allSockets.Add(socket);
           };
           //客户端离线,则从socket列表删除这个客户端
           socket.OnClose = () => {
               Console.WriteLine("Close!");
               allSockets.Remove(socket);
           };
           socket.OnMessage = message => {
               Console.WriteLine(message);
               //给发送消息的客户端回复一条消息
               socket.Send("Echo:" + message);
           });

var input = Console.ReadLine();
           //给所有客户端发送消息
           while(input!="exit")
           {
               foreach (var socket in allSockets.ToList())
               {
                   socket.Send(input);
               }
               input = Console.ReadLine();
           }
       }

6、启动项目,打印如下信息,服务端启动成功。

C#使用WebSocket与网页实时通信的实现示例

7、新建客户端,使用浏览器F12控制台模拟websocket客户端,代码如下所示:

ws = new WebSocket("ws://192.168.3.3:50000");
ws.onopen = function() {
   ws.send('websocekt测试');
};
ws.onmessage = function(e) {
   alert("收到服务端的消息:" + e.data);
};

打开两个浏览器页面,分别F12,控制台中输入以上代码,表示新建了两个客户端,将会分别收到服务端回复的消息。

C#使用WebSocket与网页实时通信的实现示例

在其中一个客户端输入代码:ws.send('xtt');发现只有这个客户端收到了回复的消息。

查看服务端打印情况如下所示:

C#使用WebSocket与网页实时通信的实现示例

来源:https://blog.csdn.net/dandingwangzi/article/details/126325089

标签:C#,WebSocket,网页,实时通信
0
投稿

猜你喜欢

  • 史上最简洁C# 生成条形码图片思路及示例分享

    2023-08-24 15:50:25
  • Android编程之播放器MediaPlayer实现均衡器效果示例

    2022-02-25 11:52:32
  • Android多渠道打包的方法步骤

    2022-10-17 12:05:07
  • C#中new的几种用法详解

    2021-09-16 23:05:56
  • Spring Cloud Config实现分布式配置中心

    2022-04-25 16:28:07
  • Java基础之详解HashSet的使用方法

    2023-08-04 20:18:59
  • Kotlin方法与Lambda表达式实践使用介绍

    2021-11-07 08:03:04
  • 详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类

    2021-08-04 03:16:28
  • Mybatis步骤分解实现一个增删改查程序

    2021-09-16 01:12:43
  • java实现多线程的两种方式继承Thread类和实现Runnable接口的方法

    2022-07-24 04:27:18
  • C#实现获取机器码的示例详解

    2021-11-13 06:57:19
  • Android Studio实现进度条效果

    2021-10-12 05:37:17
  • 使用@Value值注入及配置文件组件扫描

    2023-12-01 21:24:12
  • android自定义控件实现简易时间轴(1)

    2022-09-24 00:42:23
  • Spring中的aware接口详情

    2023-11-29 10:48:29
  • Spring框架构造注入type属性实例详解

    2021-10-04 19:45:19
  • mybatis-plus使用generator实现逆向工程

    2022-06-05 20:16:49
  • C#中委托的+=和-=深入研究

    2023-05-31 01:00:15
  • SpringBoot通知机制的实现方式

    2022-06-25 04:01:54
  • java 接口回调实例详解

    2023-11-19 15:44:24
  • asp之家 软件编程 m.aspxhome.com