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

 更新时间:2022年08月22日 08:28:01   作者:Three Big Stones  
本文主要介绍了C#使用WebSocket与网页实时通信的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

目的:使用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、启动项目,打印如下信息,服务端启动成功。

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,控制台中输入以上代码,表示新建了两个客户端,将会分别收到服务端回复的消息。

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

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

 到此这篇关于C#使用WebSocket与网页实时通信的实现示例的文章就介绍到这了,更多相关C# WebSocket与网页实时通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#操作注册表的方法

    C#操作注册表的方法

    这篇文章介绍了C#操作注册表的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#中System.Text.Json匿名对象反序列化

    C#中System.Text.Json匿名对象反序列化

    这篇文章主要介绍了System.Text.Json匿名对象反序列化,下文代码基于. NET 6,为了代码整洁,实际配置了PropertyNameCaseInsensitive = true,本文结合实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 浅析C#中文件路径的操作

    浅析C#中文件路径的操作

    在.NET类库中,有一个专门的功能类System.IO.Path,对表示文件或在目录路径的string进行操作。本文介绍下利用Path来对文件路径进行的一些经常用操作。感兴趣的朋友可以看下
    2016-12-12
  • C#实现获取磁盘空间大小的方法

    C#实现获取磁盘空间大小的方法

    这篇文章主要介绍了C#实现获取磁盘空间大小的方法,分别基于System.IO.DriveInfo.GetDrives方法与ManagementClass("Win32_LogicalDisk")来实现这一功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • C#中的多线程小试牛刀

    C#中的多线程小试牛刀

    这篇文章主要给大家介绍了关于C#中多线程的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • C#的循环语句集锦及案例详解

    C#的循环语句集锦及案例详解

    这篇文章主要介绍了C#中的基本循环:while循环、for循环和foreach循环,大家都知道循环结构可以简化程序编码,更好地实现理想的效果,并结合案例给大家讲解,需要的朋友可以参考下
    2015-07-07
  • C# 中使用正则表达式匹配字符的含义

    C# 中使用正则表达式匹配字符的含义

    正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-10-10
  • c#之关闭窗体的实现方法

    c#之关闭窗体的实现方法

    这篇文章主要介绍了c#之关闭窗体的实现方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • C#实现XML文件操作详解

    C#实现XML文件操作详解

    这篇文章主要为大家详细介绍了如何利用C#实现XML操作文件,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C#多线程异步执行和跨线程访问控件Helper

    C#多线程异步执行和跨线程访问控件Helper

    这篇文章介绍了C#多线程异步执行和跨线程访问控件Helper,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04

最新评论