当前位置: 首页 > news >正文

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.lryc.cn/news/259219.html

相关文章:

  • uni-app 一些实用的页面模板
  • STM32——震动传感器点亮LED灯
  • 使用 Timm 库替换 YOLOv8 主干网络 | 1000+ 主干融合YOLOv8
  • PHP中什么是闭包(Closure)?
  • boost::graph学习
  • 【C语言:动态内存管理】
  • 【Python基础】迭代器
  • QVTK 可视化
  • 【初阶C++】入门(超详解)
  • Java正则表达式的使用
  • Collecting Application Engine Performance Data 收集应用程序引擎性能数据
  • C Primer Plus阅读--章节16
  • 直接插入排序与希尔排序
  • 敏捷:应对软件定义汽车时代的开发模式变革
  • 做题笔记:SQL Sever 方式做牛客SQL的题目--查询每天刷题通过数最多的前二名用户
  • Vue3 用 Proxy API 替代 defineProperty API 的那些事
  • 成都工业学院Web技术基础(WEB)实验五:CSS3动画制作
  • 【Docker】学习笔记(三)三剑客之 docker-compose文件书写项目多服务容器运行
  • node.js基础
  • fastapi实现websocket在线聊天
  • LLM推理部署(六):TogetherAI推出世界上LLM最快推理引擎,性能超过vLLM和TGI三倍
  • Unity | 渡鸦避难所-2 | 搭建场景并添加碰撞器
  • 展望2024年供应链安全
  • React 列表页实现
  • 【程序人生】还记得当初自己为什么选择计算机?
  • 9-tornado-Template优化方法、个人信息案例、tornado中ORM的使用(peewee的使用、peewee_async)、WTForms的使用
  • IDEA中.java .class .jar的含义与联系
  • 北斗三号短报文森林消防应急通信及天通野外图传综合方案
  • js Array.every()的使用
  • 前端编码中快速填充内容--乱数假文