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 ...
随机推荐
- 中电金信多模态鉴伪技术抵御AI造假威胁
AI换脸技术,属于深度伪造最常见方式之一,是一种利用人工智能生成逼真的虚假人脸图片或视频的技术.基于深度学习算法,可以将一个人的面部特征映射到另一个人的面部,创造出看似真实的伪造内容.近年来,以A ...
- blender low poly + unity 3d游戏制作
会是一个有趣的方向,适合独立游戏制作人,独立动画电影制作人.
- vba interpreter 结束
https://github.com/inshua/vba-interpreter 已覆盖几乎 VB 所有的特性,只是库还不够全. VB 语言自身较为落后,语法也有诸多设计不当.最严重的莫过于函数和数 ...
- 【C#】【平时作业】习题-4-流程控制
T1 创建一个Windows应用程序,先输入年龄值,再判断是否大于18,最后显示判断结果,运行效果如图所示. 提示: 注意保持逻辑完整: 引用数据需要明确出处. [程序代码] private void ...
- Golang实战:深入解析国密算法在Go语言中的应用与优化
Golang实战:深入解析国密算法在Go语言中的应用与优化 引言 随着信息技术的迅猛发展,数据安全成为企业和个人关注的焦点.国密算法(SM系列算法)作为我国自主研发的密码算法标准,逐渐在各个领域中得到 ...
- docker保存、导入、导出和加载tar及其tar.gz
一.操作tar包1.save和load命令save命令 docker save [options] images [images...]示例 : docker save -o nginx.tar ng ...
- Qt编写安防视频监控系统38-onvif校时
一.前言 在视频监控系统中,对摄像机进行时间设置也是很有必要的,这样就和服务器或者软件这边统一了时间,一般在摄像机的画面上可以设置OSD标识当前时间,这样存储到视频文件中回放的时候,也能和本地的时间一 ...
- Qt音视频开发10-ffmpeg控制播放
一.前言 很多人在用ffmpeg做视频流解码的时候,都会遇到一个问题,如何暂停,如果打开的是本地视频文件,暂停你只需要停止解码即可,但是视频流你会发现根本没用,一旦你停止了解码,下次重新解码的时候,居 ...
- WIN10删除文件时提示“找不到该项目,该项目不在......中,请确认该项目的位置,然后重试”的解决办法
问题描述: 最近有部分WIN10用户在删除文件时提示"找不到该项目,该项目不在......中,请确认该项目的位置,然后重试". 解决办法: 1.首先新建一个TXT文档(为了方便使用 ...
- 【狂神说Java】Java零基础学习笔记-面向对象
[狂神说Java]Java零基础学习笔记-面向对象 面向对象01:什么是面向对象 面向过程&面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么.... 面对过程适合处理一些较为简 ...