C# fleck websocket使用
转载于:https://www.itspeeding.com/article/28
1、web页面
1 <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
2 <head>
3 <meta charset="utf-8" />
4 <title>WebSocket测试</title>
5 <style>
6 .div1
7 {
8 height:200px;
9 width:200px;
10 border:1px solid blue;
11 margin:auto;
12 }
13 h4
14 {
15 margin:auto;
16 }
17 </style>
18 <script>
19 var webSocket = {};
20 //创建websockt
21 function CreateWebSocket() {
22 webSocket = new WebSocket("ws://127.0.0.1:30000");
23 webSocket.onopen = WebSokectOnOpen;
24 webSocket.onmessage = WebSocketOnMessage;
25 webSocket.onclose = WebSocketOnClose;
26 };
27
28 //建立连接事件
29 function WebSokectOnOpen() {
30 alert("已经打开连接!");
31 webSocket.Send("WebSocketCreate Success!");
32 };
33
34 //监听事件
35 function WebSocketOnMessage(event) {
36 //监听来自客户端的数据
37 alert(event.data);
38 };
39
40 function WebSocketOnClose() {
41 //监听来自客户端的数据
42 alert('和服务器断开连接');
43 };
44
45 //发送事件
46 function WebSocketSendMsg() {
47 //获取text中的值
48 var text = document.getElementById("Text1").value;
49 //发送到服务器
50 webSocket.send(text);
51 };
52 </script>
53 </head>
54 <body οnlοad="CreateWebSocket()">
55 <div class="div1">
56 <h4>CSDN博客</h4>
57 <h4>By:LoveMiw</h4>
58 <input type="text" id="Text1" />
59 <input type="button" οnclick="WebSocketSendMsg()" value="发送数据" />
60 </div>
61 </body>
62 </html>
2、服务端C#代码 Nuget添加Fleck的引用,可以创建一个web应用程序
1 //客户端url以及其对应的Socket对象字典
2 IDictionary<string, IWebSocketConnection> dic_Sockets = new Dictionary<string, IWebSocketConnection>();
3 //创建
4
5 WebSocketServer server = new WebSocketServer("ws://0.0.0.0:30000");//监听所有的的地址
6 //出错后进行重启
7 server.RestartAfterListenError = true;
8
9 //开始监听
10 server.Start(socket =>
11 {
12 socket.OnOpen = () => //连接建立事件
13 {
14 //获取客户端网页的url
15 string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;
16 dic_Sockets.Add(clientUrl, socket);
17 Console.WriteLine(DateTime.Now.ToString() + "|服务器:和客户端网页:" + clientUrl + " 建立WebSock连接!");
18 };
19 socket.OnClose = () => //连接关闭事件
20 {
21 string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;
22 //如果存在这个客户端,那么对这个socket进行移除
23 if (dic_Sockets.ContainsKey(clientUrl))
24 {
25 //注:Fleck中有释放
26 //关闭对象连接
27 //if (dic_Sockets[clientUrl] != null)
28 //{
29 //dic_Sockets[clientUrl].Close();
30 //}
31 dic_Sockets.Remove(clientUrl);
32 }
33 Console.WriteLine(DateTime.Now.ToString() + "|服务器:和客户端网页:" + clientUrl + " 断开WebSock连接!");
34 };
35 socket.OnMessage = message => //接受客户端网页消息事件
36 {
37 string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;
38 Console.WriteLine(DateTime.Now.ToString() + "|服务器:【收到】来客户端网页:" + clientUrl + "的信息:\n" + message);
39 };
40 });
41
42 Console.ReadKey();
43 foreach (var item in dic_Sockets.Values)
44 {
45 if (item.IsAvailable == true)
46 {
47 item.Send("服务器消息:" + DateTime.Now.ToString());
48 }
49 }
50 Console.ReadKey();
51
52 //关闭与客户端的所有的连接
53 foreach (var item in dic_Sockets.Values)
54 {
55 if (item != null)
56 {
57 item.Close();
58 }
59 }
60
61 Console.ReadKey();
C# fleck websocket使用的更多相关文章
- Fleck websocket官方事例
Fleck websocket官方事例 server: using Fleck;using System;using System.Collections.Generic;using System.L ...
- Fleck WebSocket使用
Fleck WebSocket使用 作为笔记存储. 最近公司有这方面的使用需求.在网上查了一些资料后.得到了想要的结果.以下记录摘抄至网上资料. 1.首先,服务端.项目NuGet直接引用Fleck类库 ...
- C#工作总结(一):Fleck的WebSocket使用
一.引子(Foreword) 最近公司里面要做窗体和网页交互的功能.网上找了一下资料,这里做一个简单的扩充和整理,部分内容可能是摘自其他博客,这里会注明出处和原文地址供大家和自己日后查阅. 二.基础知 ...
- 用 Fleck 实现 websocket 通信
<html lang="en"> <head> <meta charset="utf-8"> <title>rf ...
- C# WebSocket Fleck 调用非托管C++ DLL 实现通信(使用stringbuilder接收)
[DllImport(@"XXX.dll", CallingConvention = CallingConvention.StdCall)]public static exter ...
- C# WebSocket Fleck 调用非托管C++ DLL 实现通信(使用char*接收)
[DllImport(@"C:XXX.dll", CallingConvention = CallingConvention.StdCall)] unsafe public sta ...
- H5 WebSocket 如何和C#进行通信
HTML5作为下一代的 Web 标准, 拥有许多引人注目的新特性,如 Canvas.本地存储.多媒体编程接口.WebSocket 等.WebSocket 在浏览器和服务器之间提供了一个基于 TCP 连 ...
- .NET 的 WebSocket 开发包比较(转)
.NET 的 WebSocket 开发包比较 编者按 本文出现在第三方产品评论部分中.在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品.请会员报告任何垃圾信息或广告. ...
- .NET 的 WebSocket 开发包比较
编者按 本文出现在第三方产品评论部分中.在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品.请会员报告任何垃圾信息或广告. Web项目常常需要将数据尽可能快地推送给客户 ...
- Websocket实例
C#版Websocket实例 websocket有java.nodejs.python,Php等等版本,我使用的是C#版本,服务器端是Fleck,github地址:https://github.com ...
随机推荐
- JavaFx helloworld 坑
系统 Linux Mint IDEA 创建的 hello world 项目,用 IDEA 运行就僵住,然而用 mvn clean javafx:run 却能成功----在系统 terminal能成功, ...
- HikariCP不断打印WARN日志Failed to validate connection com.mysql.jdbc.JDBC4Connection@xxxxx (...) Possibly consider using a shorter maxLifetime value.
最终解决方案(结论) maxLifeTime参数需要设置为小于min(数据库的wait_timeout,HA代理的超时时间,其他代理的超时时间);也就是说maxLifeTime不仅要像HikariCP ...
- macOS 终端可用的 Hex 查看与编辑器
在 Windows 下我们可以使用 WinHex,而在 macOS 平台上,有什么不错的十六进制查看器.编辑器呢? 准备首先,我们创建一个文件用于测试. echo 'welcome' > fil ...
- Qt编写可视化大屏电子看板系统19-横向柱状图
一.前言 横向柱状图的绘制这玩意当初还着实花费了一些时间,因为从v1版本开始,默认XY坐标轴是没有交换位置的处理的,也只有垂直的柱状图,要想换成横向的柱状图必须是自己拿到数据重新绘制,数据值的设置一般 ...
- Qt编写安防视频监控系统29-掉线重连
一.前言 掉线重连在很早很早以前就做了,基本上的方法都是搞个变量存储最后收到图片的时间,然后开个定时器判断,如果不在暂停模式下,当前时间和最后收到图片的时间差值超过了设定的超时时间,比如5s则认为掉线 ...
- Visual Studio Code启动时总是提示“Code安装似乎损坏。请重新安装。”、标题栏显示“不受支持”等信息的解决办法
我的VSCode一直提示"Code安装似乎损坏.请重新安装."同时标题栏显示"不受支持"就像这样: 反思了一下,应该是我安装的background插件,把vsc ...
- AI Agent系列-什么是AI智能体,使用Semantic Kernel开发一个AI Agent
今年最热的技术除了LLM大语言模型外,AI Agent智能体成为下一个最热的技术发展热点.. 近期准备整理几篇AI智能体的博客,带着大家了解并学习AI 智能体的开发和应用. 一.什么是AI 智能体 A ...
- linux 安装 Ollama 框架
概述 Ollama 是一款旨在简化大语言模型(LLM)本地部署的工具,支持 Windows.Linux 和 MacOS 系统.它提供了一个用户友好的环境,让开发者可以轻松地运行和调优如 Qwen.Ll ...
- Solution Set - “谁将重力悬空,坠入一场蔚蓝的梦”
目录 0.「NOI Simu.」皮配 1.「BZOJ #4671」异或图 2.「CF 1158F」Density of subarrays 3.「CF 794G」Replace All 4.「UR # ...
- WPF Play Image slider animation using Storyboard
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using Sys ...