C# WebSocket服务端/客户端通讯
				
									
					
					
						|  | 
							admin 2025年7月19日 23:41
								本文热度 1095 | 
					
				 
				引用
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 编辑过