C# WebSocket简单使用

文章目录

  • 前言
  • Fleck
    • 调试工具
    • 初始化
    • 简单使用

前言

最近接到了一个需求,需要网页实现上位机的功能。那就对数据传输的实时性要求很高。那就只能用WebSocket了。这里简单说一下我的WebSocket如何搭建

Fleck

C# WebSocket(Fleck) 客户端:html Winfrom

Fleck Github官网

在这里插入图片描述

我这里用的Fleck去做Websocket。如果有更好的Websocket包可以评论区说一下。

调试工具

这里推荐使用PostMan,自己
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

初始化

在这里插入图片描述
这样太简单了,我们需要对他进行简单封装一下

using Bogus;
using ConsoleApp1.Models;
using Fleck;
using Models;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using static System.Runtime.InteropServices.JavaScript.JSType;namespace ConsoleApp1.Services
{public class OutPartail_PRPD_Service{public List<IWebSocketConnection> Connections { get; set; }public WebSocketServer WebSocketServer { get; set; }public OutPartail_PRPD_Service(){Connections = new List<IWebSocketConnection>();WebSocketServer = new WebSocketServer("ws://0.0.0.0:7081");WebSocketServer.Start(socket =>{socket.OnOpen = () =>{PrintMsg("客户端连接成功!");Connections.Add(socket);PrintMsg("当前客户端数量:" + Connections.ToList().Count);};socket.OnClose = () =>{PrintMsg("客户端已经关闭!");Connections.Remove(socket);PrintMsg("当前客户端数量:" + Connections.ToList().Count);};socket.OnError = (e) =>{PrintMsg("客户端运行遇到问题");PrintMsg(e.ToString());};//收到消息时socket.OnMessage = message =>{PrintMsg($"接收到[{socket.ConnectionInfo.Id}]信息:{message}");socket.Send(message);};});}//打印数据private void PrintMsg(string msg){Console.WriteLine($"{SocketName}:{msg}");}//向所有已连接的对象发送数据public void SendMsg(string msg){foreach (var item in Connections){item.Send(msg);}}
}

简单使用

/// <summary>
/// Sim卡切换
/// </summary>
/// <param name="index"></param>
public async Task ChangeSimNo(int index)
{int row = (index / 12);string col = Convert.ToInt32(index % 12).ToString("X1");var msg = $"AT+S{row}{col}";SimNo = -1;Send(msg);try{var res = await Recive(waitTime);ShowMsg(res);res = await Recive(waitTime);if (res.Contains("OK")){SimNo = index;ShowMsg($"Sim[{index}]卡切换成功!");}else{ShowMsg($"Sim[{index}]卡接受报文错误,应为OK!");}}catch (Exception ex){throw new Exception("等待OK超时");}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D中实现箭头指向目标点的效果(shader)

系列文章目录 Unity工具 文章目录 系列文章目录前言一、效果如下二、制作步骤2-1、制作shader2-2、shader代码2-3、制作材质球2-4、新建Quad2-5、制作预制体2-6 、实现代码2-7、设置Quad到脚本2-8、路径设置如下 三、说明四、运行程序总结 前言 大家好&#xff0c;我是心疼你…

鸿蒙开发—UI框架概述

基本概念 UI框架 HarmonyOS提供了一套UI开发框架&#xff0c;即方舟开发框架&#xff08;ArkUI框架&#xff09;。方舟开发框架可为开发者提供应用UI开发所必需的能力&#xff0c;比如多种组件、布局计算、动画能力、UI交互、绘制等。 方舟开发框架针对不同目的和技术背景的…

数据结构与算法编程题47

无向图的邻接表 #include <iostream> using namespace std;#define MVnum 100 typedef string VertexType;typedef struct ArcNode {int adjvex;struct ArcNode* nextarc;int weight; }ArcNode;typedef struct VNode {VertexType data;struct ArcNode* firstarc; }VNode,…

性能测试工具:Jmeter介绍

JMeter是一个开源的Java应用程序&#xff0c;由Apache软件基金会开发和维护&#xff0c;可用于性能测试、压力测试、接口测试等。 1. 原理 JMeter的基本原理是模拟多用户并发访问应用程序&#xff0c;通过发送HTTP请求或其他协议请求&#xff0c;并测量响应时间、吞吐量、并发…

关于对Spring事件监听机制相关解析

1、Spring事件监听器使用 Spring事件监听体系包括三个组件&#xff1a;事件、事件监听器&#xff0c;事件广播器 事件&#xff1a;定义事件类型和事件源&#xff0c;需要继承ApplicationEvent import org.springframework.context.ApplicationEvent; public class OrderEvent…

虹科新闻丨虹科正式加入广州市新联会科创分会

来源&#xff1a;虹科电子科技有限公司 虹科新闻丨虹科正式加入广州市新联会科创分会 11月7日&#xff0c;由广州市委统战部、广州开发区管委会、黄埔区人民政府指导&#xff0c;佳都集团、佳都科技集团、广州开发区投资集团共同主办的未来之城大湾区元宇宙创新示范中心&#…

金鸣表格文字识别大师扫描仪使用技巧

所需硬件&#xff1a;PC&#xff08;电脑&#xff09;、扫描仪 所需软件&#xff1a;金鸣表格文字识别大师5.0以上版本&#xff08;以下简称“本软件”&#xff09; 实现功能&#xff1a;直接用扫描仪扫描图片并将其转换为可编辑的excel或word. 实现原理&#xff1a;本软件利…

DevEco Studio集成ArkUI-X

语雀知识库地址&#xff1a;语雀HarmonyOS知识库 飞书知识库地址&#xff1a;飞书HarmonyOS知识库 在上篇文章(HarmonyOS应用开发工具DevEco Studio安装与使用)中我说到官方推出了4.0 Beta版本的IDE&#xff0c;这篇文章就来介绍这个版本的安装与使用 该版本集成了HarmonyOS多…

利用ChatGPT的写作能力,可以更好地组织思路、提升论文的逻辑性和质量

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

UE4.27-UE5.1设置打包Android环境

打包Android配置文件 1. 配置打包Android的SDK需求文件位于下面文件中&#xff1a; 2. 指定了对应的SDK环境变量名字以及NDK需求等&#xff1a; UE4.27-UE5.1--脚本自动配置 安装前提 1. 务必关闭虚幻编辑器和Epic Games Launcher&#xff0c;以确保NDK组件的安装或引擎环境…

P1005 [NOIP2007 提高组] 矩阵取数游戏

网址&#xff1a;P1005 [NOIP2007 提高组] 矩阵取数游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 动态规划和高精度的组合&#xff0c;使我的滨州旋转 最后只得了80&#xff0c;两个测试点超时了 看题解有人是用了int128来做的&#xff0c;明天学一下 我的递归思路和…

关于 mapboxgl 的常用方法及效果

给地图标记点 实现效果 /*** 在地图上添加标记点* point: [lng, lat]* color: #83f7a0*/addMarkerOnMap(point, color #83f7a0) {const marker new mapboxgl.Marker({draggable: false,color: color,}).setLngLat(point).addTo(this.map);this.markersList.push(marker);},…

AI必然成为未来的OS

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 ChatGPT引入插件&#xff0c;AI必然成为未来OS&#xff0c;或至少成为绝大多数APP首选入口。未来软件开发根据任务不同&#xff0c;有两种不同范式&#xff1a; &a…

unity 2d 入门 飞翔小鸟 场景淡入淡出功能(三)

1、在图层新建个空的图层 场景2 2创建c#脚本 脚本创建好后&#xff0c;将脚本推拽进空白图层里面&#xff0c;将黑色图片拉进去脚本的参数里面&#xff0c;如上面最后一张图&#xff0c;两个切换的场景都要进行上述操作 using System.Collections; using System.Collection…

识别低效io引起的free buffer waits

产生事发时间段的awr报告 Top 5 wait events 这里重点关注&#xff1a; 1.free buffer waits 2.enq_HW-contention 3.enq:tx-row lock contention enq:HW-contention属于水位线的争用&#xff0c;已经透过alter table allocate extent&#xff0c;提前分配空间,这里不做讨论 …

软件工程之需求分析

一、对需求的基本认识 1.需求分析简介 (1)什么是需求 用户需求&#xff1a;由用户提出。原始的用户需求通常是不能直接做成产品的&#xff0c;需要对其进行分析提炼&#xff0c;最终形成产品需求。 产品需求&#xff1a;产品经理针对用户需求提出的解决方案。 (2)为什么要…

【Python】Flask + MQTT 实现消息订阅发布

目录 Flask MQTT 实现消息订阅发布准备开始1.创建Flask项目2创建py文件&#xff1a;mqtt_demo.py3.代码实现4.项目运行5.测试5.1 测试消息接收5.2 测试消息发布6、扩展 Flask MQTT 实现消息订阅发布 准备 本次项目主要使用到的库&#xff1a;flask_mqtt pip install flask…

Leetcode刷题详解——最长湍流子数组

1. 题目链接&#xff1a;978. 最长湍流子数组 2. 题目描述&#xff1a; 给定一个整数数组 arr &#xff0c;返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转&#xff0c;则该子数组是 湍流子数组 。 更正式地来说&#xff0c;当 arr 的子…

ALPHA开发板烧录工具MfgTool简介

一. 简介 前面我们已经移植好了 uboot 和 linux kernle &#xff0c;制作好了根文件系统。但是我们移植都是通 过网络来测试的&#xff0c;在实际的产品开发中肯定不可能通过网络来运行。 因此&#xff0c;我们需要将 uboot 、 linux kernel 、 .dtb( 设备树 ) 和 rootf…

串口环形收发原理及实现

一、环形收发队列构建 1、构造环形收发数组及其长度 #define buff_size 10 Unsigned char buff[buff_size]; 2、定义环形收发读/写位置 u16 R_Buff; u16 W_Buff; 3、结构体封装 typedef struct Qbuff {u16 write; //写位置u16 read; //读位置u8 buf…