制造业通讯平台是部署在企业自有服务器上、面向工厂网络环境的一套即时通讯与协同系统。它把人员之间的消息、设备产生的告警、业务系统发出的通知放进同一条通信链路,再按组织关系送到桌面端、手机或工位终端。
讨论它如何运行,容易停在功能列表:单聊、群聊、文件传输、音视频会议。这些只是界面上的结果。决定一套平台能不能在车间用住的,是背后的机制:连接怎么维持,消息怎么找到人,离线以后怎么补,生产事件怎么接入,安全边界落在哪一层。
沿着一条消息的实际路径,可以把这些问题拆清楚。
制造业通讯平台传的到底是什么
它的消息来源通常有三类。
- 人:班组、维修、工艺、计划之间围绕工单、质量和进度的沟通。
- 系统:MES、ERP、WMS、OA 等业务系统发出的审批、库存、质量和计划变更通知。
- 设备:PLC、数控机床、传感器和安灯系统产生的状态变化与异常信号。
三类消息的时效要求并不相同。人的消息可以容忍几秒延迟,设备告警往往按秒计,业务审批可能按小时计。平台要用同一套会话和通知机制接住它们,同时保留发送者、接收者、时间和处理状态。
和普通办公聊天工具相比,制造业通讯平台的差别不在界面,而在四个约束:
- 网络边界:服务器部署在企业侧,纯内网环境下客户端只能通过内网地址访问。
- 消息来源:系统事件和人工输入共用一条通道。
- 送达要求:消息与生产节奏相关,延迟和丢失都会被放大。
- 可追溯:谁收到、谁响应、何时处理,要能查。
需要划清的是,它不替代 MES、ERP,也不承担设备控制。MES 记录工单和工艺,ERP 管计划和经营,通讯平台负责把事件送到人,并把处理过程留在会话和审计记录里。 通讯平台不生产生产数据,它解决的是事件与责任人之间的连接。
整体架构:五层各管什么
把系统拆成五层,目的不是画一张好看的架构图,而是出问题时能快速定位责任。
| 层次 | 主要职责 | 典型组件 |
|---|---|---|
| 客户端层 | 展示会话、收发消息、本地缓存与断线重连 | 桌面端、移动端、Web 端、工位终端 |
| 接入与会话层 | 建立并维持连接、鉴权、记录在线状态 | 长连接网关或消息中转服务 |
| 消息路由层 | 单聊与群聊寻址、消息扇出、序号分配、回执 | 路由与转发模块 |
| 业务与存储层 | 账号组织、消息持久化、文件管理、管理接口 | 业务服务、数据库、文件存储 |
| 集成与管理层 | 接口接入、机器人、权限、审计、监控 | API、Webhook、后台管理 |
这五层里,最容易被忽略的是接入与会话层。它不做业务判断,只负责维持连接、识别用户和设备、记录在线状态。连接一断,后面的路由和存储都无从谈起。
另一个容易混淆的是消息路由层与业务存储层。路由层关心“这条消息该投给哪些在线连接”,存储层关心“消息如何持久化、如何被重新拉取”。把两者混在一起,群消息一多就会出现转发和落库互相拖慢。
喧喧IM 的三层结构与这个模型对应:服务端(XXB)基于 PHP、MySQL 和 ZentaoPHP,承担账号、组织、数据存储和管理接口;消息中转服务器(XXD)用 Go 实现高并发通信和文件管理;客户端(XXC)基于 Electron 提供跨平台界面。业务管理和连接转发分开以后,连接最密集的部分可以独立优化。
终端、消息中转、业务服务与生产系统接入,构成通讯平台的主要层次。
一条消息从发出到送达,中间经过哪些环节
把一次发送拆开,至少经过六个动作。
- 鉴权与设备登记:客户端用账号登录,服务端校验身份、设备和企业网络来源,确定这个人属于哪个组织、能访问哪些会话。
- 建立或复用连接:客户端与消息中转服务建立长连接。之后每次发送都复用这条连接,不再重复走登录流程。
- 封装消息:客户端生成客户端消息 ID,服务端补充会话 ID、消息类型、接收范围和服务端序号。
- 路由与扇出:单聊按接收方用户找到其在线连接;群聊先确定群成员,再找到其中的在线连接,分批推送。离线成员不占推送连接,消息转入待拉取状态。
- 持久化:消息写入数据库,图片和附件写入文件存储。写入与推送的先后顺序会影响可靠性,常见做法是先保证消息可恢复,再完成在线投递。
- 回执与补偿:接收端返回确认,发送端更新消息状态;超时未确认则重试,重试时依靠消息 ID 去重。接收端重新上线后,再按同步位置拉取离线消息。
这六步里,任何一步都可能出问题,但表现不一样。
| 环节 | 关键动作 | 出问题时常见表现 |
|---|---|---|
| 登录与鉴权 | 校验账号、设备、网络来源 | 无法登录、频繁掉线、部分账号被限制 |
| 连接建立 | 维持长连接与在线状态 | 在线状态不准、消息延迟 |
| 消息封装 | 生成消息 ID、会话 ID、序号 | 重复、顺序错乱、会话归属错误 |
| 路由投递 | 找到在线连接并推送 | 群消息部分人收不到、单聊收不到 |
| 持久化 | 消息落库、文件落存储 | 重启后消息缺失、附件打不开 |
| 确认与补偿 | 回执、重试、离线拉取、去重 | 状态停在发送中、重复提醒 |
以群消息为例,群成员越多,扇出次数越多。服务端通常先确定在线连接,再分批推送;离线成员不参与实时推送,只保留待同步记录。这样群规模和在线人数才不会直接压垮转发服务。
消息经中转枢纽完成寻址与投递,离线时进入存储,送达后返回回执。
实时性、可靠性与多端同步靠什么
早期做法是轮询:客户端每隔几秒问一次服务器有没有新消息。延迟上限就是轮询间隔,间隔越短,无效请求越多。长连接把“客户端反复问”换成“服务端主动推”,一次握手后保持双向通信。
主流实现基于 WebSocket。IETF 在 RFC 6455 中把它定义为一次握手后、在 TCP 之上进行双向消息传输的协议;协议还定义了 Ping 和 Pong 控制帧,用来检测连接是否仍然可用。相比 HTTP 的请求—响应模式,服务器不必等客户端先开口,才第一次有能力主动推送。
长连接只是起点。真实网络里还要处理四件事。
保活。长时间空闲的连接会被网络设备回收,双方靠定时心跳判断对方是否还在线。心跳间隔要结合网络环境设置:太长,失效连接回收慢;太短,移动端耗电和流量增加。
断线重连。网络切换、设备休眠都会断开连接。客户端通常按逐步拉长的间隔重试,并加入随机抖动,避免大量终端在同一时刻重连,把服务端压住。
顺序一致。不同设备的本地时间有偏差,消息顺序不能按客户端时间排,而应按服务端分配的递增序号排,才能保证不重不漏。
去重。客户端重试时带上同一个客户端消息 ID,服务端据此判断这条消息是否已经处理过;接收端再按服务端消息 ID 去重,避免同一条消息出现两次。
离线补偿则依赖服务端持久化和同步位置。接收方上线后,先拉取离线消息列表,再建立长连接接收实时消息。两步分开做,才能避免中间出现空档或顺序混乱。
多端同时在线的场景还要多一层处理。同一个人可能在电脑和手机同时登录,消息要推给所有在线端;已读状态由服务端统一记录和广播,否则一端看过了,另一端还挂着未读。
实时性不是单点指标,而是连接维持、断线重连、离线补偿和顺序控制共同作用的结果。 评估时至少要看四个指标:延迟、丢失、重复、乱序。只看“发出去很快”,说明不了整套机制是否可靠。
生产事件怎么变成一条可处理的消息
设备报警不会自己变成聊天消息。中间要经过一条接入链路。
- 事件产生:PLC、机床和传感器上报状态与报警码;MES 汇总工单、工序和质检异常;安灯按钮和人工巡检也会产生事件。
- 格式转换:采集网关或业务系统把原始信号整理成结构化事件,至少包含设备编号、工位、产线、故障类型、发生时间和严重级别。
- 生成消息:业务系统在事件发生时调用平台接口,或发送 Webhook;机器人或应用账号按模板把事件转成一条消息。常见做法是利用平台提供的 API、Webhook 等扩展能力 完成对接。
- 按责任关系路由:根据事件类型、产线、班组和值班表找到接收人。一般会同时落到责任群和责任人,严重级别高的再触发升级。
- 形成闭环:接收人确认、处理、关闭,系统记录响应时间;超过设定时限未确认,消息升级给上一级负责人。
一条可处理的消息,至少要回答清楚:发生了什么、发生在哪条线或哪台设备、什么时候发生、严重程度如何、该谁处理、从哪里进入处置流程。只发一个故障码,收到的人还要回系统查;把设备、工位、班次和处置入口一起带上,消息才有行动价值。
升级机制也要按事件级别设计。所有告警都追同一个人,很快就会出现告警疲劳;所有告警都不升级,又容易在夜间或交接班时卡住。比较稳妥的做法是:先定义事件等级,再为每个等级设置响应时限和升级对象。
需要明确边界:通讯平台是通知与协作层,不替代设备的安全联锁和控制系统。紧急停机、参数调整这类动作应由 OT 侧的控制逻辑完成,不能靠聊天窗口里的指令来代替。
生产异常先被整理成结构化事件,再按责任关系推送给维修人员和主管。
安全边界:数据在哪一跳被保护
制造企业关心数据不出厂,但“数据不出厂”只是网络边界,不等于全部安全。要把网络、身份、传输、文件、数据库和使用过程分开看。
- 网络边界:服务器部署在企业自有环境,纯内网模式下客户端只能通过内网地址访问,数据不经过外部网络。
- 身份边界:账号、组织架构、IP 登录限制共同决定谁能登录、能访问哪些范围;LDAP 或 AD 认证可以把企业现有账号体系接进来。
- 传输边界:客户端与服务器之间的消息和文件走加密通道,传输环节采用 AES 256 位加密。
- 文件边界:图片、附件在服务端以 AES 256 位加密存储。
- 数据库边界:消息在数据库中加密存储,降低数据库文件被直接读取的风险。
- 使用边界:组织隔离、界面水印、消息审计和角色权限,约束的是登录之后的访问与操作。
| 边界 | 保护对象 | 常见机制 | 需要确认的细节 |
|---|---|---|---|
| 网络 | 谁能连到服务器 | 私有化部署、纯内网访问 | 服务器位置、客户端访问路径 |
| 身份 | 谁可以登录 | 账号、LDAP/AD、IP 登录限制 | 与现有目录服务的同步方式 |
| 传输 | 链路中的消息和文件 | AES 256 位加密 | 客户端到服务器的链路 |
| 服务端文件 | 图片、附件 | AES 256 位加密存储 | 文件落盘位置与备份方式 |
| 数据库消息 | 消息正文 | 消息在数据库中加密存储 | 是否属于专业版能力 |
| 使用过程 | 截图、转发、误操作 | 界面水印、消息审计、组织隔离 | 追溯范围与权限边界 |
这张表里最需要避免的写法,是把传输、文件和数据库混成一句“全部 AES 256”。三者保护的对象不同,机制也不同,混着说既说不清边界,也容易造成错误预期。 加密要按层说明,安全能力要落到具体环节。
界面水印和消息审计的作用是威慑与追溯,不是阻止截图。它们能提高泄露成本、帮助定位源头,但不能替代终端管控和人员管理。
一套完整的 通讯安全能力 通常还会涉及组织隔离、IP 登录限制、LDAP/AD 认证等配置项。哪些属于开源版、哪些需要专业版,要在部署前逐项确认,不能把专业版能力当成默认能力。
部署方式与容量估算
部署先回答三个问题:服务器放在哪、客户端从哪里访问、哪些组件要分开。
制造业通讯平台通常包含三类服务:业务服务负责账号、组织、消息存储和管理接口;消息中转服务负责长连接、消息转发和文件管理;音视频会议需要单独的音视频服务。三者对 CPU、内存、带宽和存储的要求不同,放在同一台服务器上会互相争抢资源。
网络环境常见两种:
- 公网访问:服务器具备公网 IP,客户端通过公网地址访问。
- 纯内网访问:服务器不连接外网,所有客户端只能从企业内网访问。
两种模式的部署和运维重点不同。纯内网环境要把域名解析、证书、端口和升级包分发都在内网准备好;公网环境则要额外关注暴露面和访问控制。端口方面,喧喧IM 的安装文档要求开放 11443 和 11444,若服务器前有防火墙或云安全组,需要同步放行。
容量估算不能只看注册人数。至少要看四个量:同时在线连接数、消息峰值速率、文件上传带宽、历史数据存储量。注册一万人和同时在线一万人不是一回事;群消息扇出还会把一条消息放大成多次投递。
官网给出的 5000 人以下参考标准是:XXB 服务器 16G 内存、8 核以上;XXD 服务器 16G 内存、8 核以上;音视频服务器 8 核以上,带宽建议 8Mbps 以上。音频会议每人约占用 0.5Mbps,音视频会议每人约占用 1Mbps。这是参考配置,不是性能承诺,实际资源仍要按在线人数、消息频率、文件大小和会议并发核算。官网公开口径为支持 10000+ 用户同时在线,真实项目也应以上述四个量做压测。
存储规划同样要提前做。消息、文件、审计记录的增长速度不同,保留周期也不同。纯内网环境的备份、恢复和版本升级需要单独设计流程,不能依赖外部网络临时处理。具体的服务端维护与配置,可以参考 服务端管理手册;部署模式的选择可以对照 私有化部署 的说明。
常见故障怎么按层定位
排障最怕一上来就重启。先确认影响范围,再按层缩小。
- 看范围:全员、部分人、单个设备、单个会话,还是某一类消息。
- 看时间:突然发生,还是升级、网络调整、证书更新之后出现。
- 看层次:网络是否可达,接入是否在线,路由是否投递,存储是否落库,集成是否成功。
- 看证据:客户端日志、服务端日志、在线连接数、消息落库状态、接口返回码。
- 做复现:固定发送端、接收端和网络条件,确认问题能否稳定出现。
| 现象 | 先看哪一层 | 常见原因 |
|---|---|---|
| 全员无法登录 | 网络、接入、业务服务 | 服务器不可达、端口未放行、地址或证书配置错误、服务未启动 |
| 部分人频繁掉线 | 接入、客户端网络 | 心跳超时、网络切换、代理或防火墙回收长连接 |
| 群消息部分人收不到 | 路由、在线状态 | 在线状态不准、扇出失败、离线队列未同步 |
| 消息状态停在发送中 | 回执、存储 | 服务端未确认、落库失败、客户端重试未触发 |
| 重启后消息缺失 | 存储、持久化 | 落库延迟、备份或恢复不完整 |
| 同一消息重复出现 | 去重、重试 | 重试未带幂等标识、服务端重复投递 |
| 文件上传失败 | 文件存储、带宽 | 存储空间不足、上传超时、权限或大小限制 |
| 告警没有推送 | 集成、路由 | 接口鉴权失败、事件格式不符、接收人或群组配置错误 |
这张表的用法是先看现象落在哪一层,再去看该层的日志和配置。比如“全员无法登录”,先确认服务器是否可达、端口是否放行,再去查账号体系;“部分人频繁掉线”,则更可能是客户端网络或长连接被中间设备回收。
故障定位的关键不是记住所有原因,而是先判断影响范围,再沿着连接、路由、存储、集成四段逐层排除。 能把问题稳定复现,往往比反复重启更有价值。
选型时怎么验证这些机制
功能演示能展示界面,不能证明机制。验证要制造条件,让机制暴露出来。
- 断线重连:拔掉网线或切换网络,观察重连时间、是否重复消息、在线状态是否恢复。
- 离线补偿:让接收端离线一段时间,上线后检查消息完整性、顺序和未读状态。
- 多端同步:电脑和手机同时在线,检查消息是否都到达、已读状态是否一致。
- 群消息扇出:在大群、多端、部分成员离线的条件下发送消息,检查延迟和遗漏。
- 重启恢复:重启服务端,检查消息、会话和文件是否仍可访问。
- 集成失败:让 Webhook 返回错误或超时,检查是否有重试、告警和补偿,而不是静默丢失。
- 权限隔离:用不同组织、不同部门的账号交叉访问,检查通讯录、会话和文件边界。
- 备份恢复:备份后执行恢复,检查消息和文件是否可用。
- 容量压测:按预期的峰值连接数和消息速率施压,观察延迟、错误率和资源占用。
这些测试不需要复杂环境,但要在企业自己的网络和终端上做。演示环境里的顺畅,替代不了车间网络里的抖动。
喧喧IM 是禅道软件(青岛)集团有限公司自主研发的企业级即时通讯与协同平台,提供开源版和专业版两档。它采用服务端、消息中转服务器、客户端三层结构,支持私有化部署和纯内网访问,通信全加密,服务端文件以 AES 256 位加密存储;专业版还提供数据库消息加密存储、界面水印、IP 登录限制等能力。平台适配银河麒麟、统信 UOS 等国产操作系统,以及鲲鹏、申威、飞腾等国产 CPU,并通过 API、Webhook 和机器人机制接入 MES、ERP 等系统。官网公开口径为支持 10000+ 用户同时在线,制造业场景可参考 制造业即时通讯解决方案。
回到开头的问题,这套机制可以归纳为三点:
- 连接层负责让人在线,路由层负责把消息送到正确的连接,存储层负责在对方不在线时把消息留住。
- 生产事件先被整理成结构化消息,再按责任关系路由,最后用确认和升级机制形成闭环。
- 安全不是一个“私有化”就能概括,网络、身份、传输、文件、数据库和使用过程各有各的边界。
理解这三点,选型时就不容易被功能列表带偏,排障时也知道先看哪一层。

4519
联系我们
社群交流