转载于: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使用的更多相关文章

  1. Fleck websocket官方事例

    Fleck websocket官方事例 server: using Fleck;using System;using System.Collections.Generic;using System.L ...

  2. Fleck WebSocket使用

    Fleck WebSocket使用 作为笔记存储. 最近公司有这方面的使用需求.在网上查了一些资料后.得到了想要的结果.以下记录摘抄至网上资料. 1.首先,服务端.项目NuGet直接引用Fleck类库 ...

  3. C#工作总结(一):Fleck的WebSocket使用

    一.引子(Foreword) 最近公司里面要做窗体和网页交互的功能.网上找了一下资料,这里做一个简单的扩充和整理,部分内容可能是摘自其他博客,这里会注明出处和原文地址供大家和自己日后查阅. 二.基础知 ...

  4. 用 Fleck 实现 websocket 通信

    <html lang="en"> <head> <meta charset="utf-8"> <title>rf ...

  5. C# WebSocket Fleck 调用非托管C++ DLL 实现通信(使用stringbuilder接收)

     [DllImport(@"XXX.dll", CallingConvention = CallingConvention.StdCall)]public static exter ...

  6. C# WebSocket Fleck 调用非托管C++ DLL 实现通信(使用char*接收)

    [DllImport(@"C:XXX.dll", CallingConvention = CallingConvention.StdCall)] unsafe public sta ...

  7. H5 WebSocket 如何和C#进行通信

    HTML5作为下一代的 Web 标准, 拥有许多引人注目的新特性,如 Canvas.本地存储.多媒体编程接口.WebSocket 等.WebSocket 在浏览器和服务器之间提供了一个基于 TCP 连 ...

  8. .NET 的 WebSocket 开发包比较(转)

    .NET 的 WebSocket 开发包比较 编者按 本文出现在第三方产品评论部分中.在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品.请会员报告任何垃圾信息或广告. ...

  9. .NET 的 WebSocket 开发包比较

    编者按 本文出现在第三方产品评论部分中.在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品.请会员报告任何垃圾信息或广告. Web项目常常需要将数据尽可能快地推送给客户 ...

  10. Websocket实例

    C#版Websocket实例 websocket有java.nodejs.python,Php等等版本,我使用的是C#版本,服务器端是Fleck,github地址:https://github.com ...

随机推荐

  1. Vulnhub经典靶机:from_sqli_to_shell_i386入门靶机

    靶机官网: https://www.vulnhub.com/entry/pentester-lab-from-sql-injection-to-shell,80/ 靶机镜像ISO下载地址:(转链) f ...

  2. arch 输入法

    输入法配置 输入法采用fcitx + Sogou的组合,安装需要的包: yay -S fcitx fcitx-im fcitx-configtool fcitx-sogoupinyin 然后写一个fc ...

  3. consul discovery prefer-ip-address

    spring.cloud.consul.discovery.prefer-ip-address: 'true'

  4. 谈谈 HTTP/2 的协议协商机制

    在过去的几个月里,我写了很多有关 HTTP/2 的文章,也做过好几场相关分享.我在向大家介绍 HTTP/2 的过程中,有一些问题经常会被问到.例如要部署 HTTP/2 一定要先升级到 HTTPS 么? ...

  5. Mac触控板设置以及使用

    Mac 触控板体验是非常好的,很多同学甚至直接用触控板代替鼠标操作,但是默认设置中有一些功能是没有开启的,需要手动配置. 本文就来说说 如何更改 Mac 触控板默认设置,让触控板变得更高效. 一.启用 ...

  6. Qt开发经验小技巧141-145

    QImage支持xpm图标,查看Qt内置的QStyle风格的代码中可以发现大量的xpm图标定义,通过代码的形式来产生图标,哇咔咔好牛逼. static const char * const imgDa ...

  7. Many-shot Jailbreaking💘足够长的上下文长度有利于各种越狱?

    这篇文章虽然相较于上一篇图的对应有点迷,但是我感到了作者在强化学习与微调还有数学方面的深厚功底,我甚至感觉他的附录可以再发一篇文章了 这阶段的学习打开了我对越狱的思路~ 禁止盗用,侵权必究!!!欢迎大 ...

  8. MySql 建表出现的问题 : [ERR] 1064 - You have an error in your SQL syntax; check the manual.......

    使用 MySql 建表出现的问题 在使用 Navicat Premium 运行 sql 语句进行建表时,MySQL 报错如下: 1064 - You have an error in your SQL ...

  9. torque提交作业

    PBS(Protable Batch System)是功能最为齐全,历史最悠久,支持最广泛的本地集群调度器之一. PBS的目前包括openPBS,PBS Pro和Torque三个主要分支.其中Open ...

  10. Android RNDIS gadget Windows免驱修改方案

    过程简单粗暴,拿到竞品的设备,然后使用UsbTreeView查看设备的相关描述符. 对比发现接口抽象描述符和接口描述符不一致,直接修改Linux RNDIS gadget 驱动,将驱动中有关的两个描述 ...