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