C# WebSocket服务端/客户端通讯
|
admin
2025年7月19日 23:41
本文热度 1001
|
引用
using HslCommunication;using HslCommunication.WebSocket;
public class WebSktClientHelper{private string webSocketUrl = "ws://IP地址:端口号";
private WebSocketClient client = null;
public Action<string> ActMsgReceived = null;
public WebSktClientHelper(string ipAddr, string port) {this.webSocketUrl = $"ws://{ipAddr}:{port}"; }
public void TurnOn() { TurnOff(); client = new WebSocketClient(webSocketUrl); client.OnClientApplicationMessageReceive += client_MessageReceived; OperateResult connect = client.ConnectServer(); }
private void client_MessageReceived(WebSocketMessage message) {string msg = Encoding.UTF8.GetString(message.Payload);
logMessage("接收到消息:"+ msg);if (!string.IsNullOrEmpty(msg)) ActMsgReceived?.Invoke(msg); }
public void SendData(string msg) {try {if (client != null) { logMessage("发送消息:" + msg); client.SendServer(true, msg); } }catch (Exception ex) { logMessage($"发送消息异常,{ex.Message}"); } }
public void TurnOff() {try {if (client != null) { client.ConnectClose(); client.Dispose(); } }catch (Exception) { } }}
二、服务端
public class WebSktSvrHelper{private WebSocketServer server = null;
private int serverPort = 8080;
public Action<string, string> ActMsgReceived = null;
public WebSktSvrHelper(string port) { serverPort = int.Parse(port); }
public void TurnOn() { TurnOff();
server = new WebSocketServer();
server.ServerStart(serverPort);
server.OnClientApplicationMessageReceive += (session, message) => {string receivedMsg = Encoding.UTF8.GetString(message.Payload);
logMessage($"收到客户端消息: {receivedMsg}"); ActMsgReceived?.Invoke(session.Remote.ToString(), receivedMsg);
server.SendClientPayload(session, $"服务器已收到: {receivedMsg}"); }; }
public void TurnOff() {try {if (server != null) { server.ServerClose(); server.Dispose(); } }catch (Exception) { } }}
HslCommunication 全面解析
一、基本定义与用途
HslCommunication 是一个功能强大的通信库,最初设计目的是作为三菱PLC的通讯库,但在长期开发过程中功能不断丰富,定位也逐渐扩展。它不仅仅用于工厂设备(如PLC设备、机器人设备、仪器仪表等)的通信,还支持以下多种通信场景:
对于制造企业,HslCommunication可用于快速开发工厂小软件,如设备数据监视系统、工艺数据记录系统、仓储系统或远程PLC数据读写系统。对于系统集成商,它可以配套上位机软件系统,增加项目附加值,实现高质量、低成本的工厂软件交付。
二、主要功能特点
1. 多协议支持
HslCommunication 支持多种工业通信协议,包括但不限于:
2. 跨平台能力
基于 .NET Core/5/6/7,HslCommunication 能够在 Windows 和 Linux 平台上运行,实现了真正的跨平台能力。
3. 高性能与稳定性
- 完善的异常处理机制,确保应用程序在遇到通信问题时能够稳定运行
4. 易于集成与使用
- 提供简洁的API,开发者无需深入了解每种协议的复杂细节
三、开发环境与平台支持
1. 开发语言
HslCommunication 主要基于 C# 开发,支持 .NET 平台。
2. 支持平台
- 可在 Windows 和 Linux 平台上运行
3. 开发工具
支持多种开发环境,包括:
四、官方资源与开源信息
1. 官方文档
- 官网API文档:http://api.hslcommunication.cn/
- 更完整的文档介绍:http://www.hsltechnology.cn/Doc/HslCommunication
2. GitHub资源
GitHub上有多个与HslCommunication相关的项目和示例代码,包括:
- 工业物联网控件库HslControls的使用demo
- PLC读取示例项目,支持Web端和安卓端数据显示
3. NuGet包
可通过NuGet包管理器安装:
Install-Package HslCommunication
NuGet页面:https://www.nuget.org/packages/HslCommunication/
五、应用案例与使用场景
1. 典型应用场景
- 工厂自动化:生产线上与PLC通讯,实现设备间数据交互
- 智能监控:采集PLC数据,实现实时监控和故障预警
- 设备调试:实时监控PLC运行状态,快速发现并解决问题
- 故障诊断:分析PLC数据,找出故障原因,减少停机时间
- 系统优化:分析PLC运行数据,对控制系统进行优化
2. 具体实现案例
- 数据服务器:定时更新数据,客户端订阅获取最新数据
- 发布-订阅机制:类似MQTT协议,支持客户端界面实时数据显示
- 跨程序通信:实现异步、同步、一对多、WebAPI等网络框架
六、优势与价值
- 简化开发:封装网络通信细节,减少开发代码量,让开发者专注于业务逻辑
- 灵活性:支持C#基础数据类型,提供跨平台部署能力
- 社区支持:拥有活跃的开发者社区,提供及时技术支持
- 企业采用:已有近百家企业和大学在使用,NuGet下载量超过20万
HslCommunication作为工业数据通信的全能助手,为工业4.0和智能制造提供了强大的基础通信支持,是工业软件开发的重要工具之一。
阅读原文:原文链接
该文章在 2025/7/21 10:44:39 编辑过