服务协议:如何创建一个网络协议?你可以知道的矩阵协议 实现和现状 二

承上一节

5 Matrix实现的常见组件和结构

Matrix是一种开源通信协议,旨在实现安全、分散和可互操作。它可以用于各种目的,包括即时消息、语音和视频聊天以及文件共享。

下面是Matrix的一些用法:

makefile 复制代码
即时消息传递:Matrix可用于一对一和分组的即时消息传递。
语音和视频聊天:Matrix可以用于语音和视频聊天,可以是一对一的,也可以是群聊。
文件共享:矩阵可以用于文件共享,无论是一对一的还是分组的。
物联网(IoT): Matrix可用于与物联网设备通信,如智能家电和可穿戴设备。
自定义应用程序:Matrix可用于构建自定义应用程序,例如社交网络和聊天机器人。

它基于分散式架构,使用"家庭服务器"的概念来存储和管理用户数据。每个用户都有自己的家庭服务器,负责处理他们的通信并为他们提供一致的消息传递体验。

Matrix协议是由一个JSON规范定义的,该规范描述了用于在主服务器之间通信的消息、事件和其他数据结构的格式。本规范分为以下几个部分:

makefile 复制代码
客户机-服务器API:

该API定义客户机和服务器之间交换的消息。它包括用于创建和加入房间、发送消息和管理状态的消息。

makefile 复制代码
服务器-服务器API:

此API定义在主服务器之间交换的消息。它包括用于同步房间数据、管理用户和处理联合的消息。

makefile 复制代码
应用程序服务API:

这个API定义了应用程序服务和主服务器之间交换的消息。应用程序服务是可以与Matrix用户和房间交互的第三方应用程序。

矩阵协议还由一组事件类型定义,这些事件类型用于表示房间中可能发生的不同类型的通信。这些事件类型包括:

makefile 复制代码
message:此事件类型表示在房间中发送的消息。
member:该事件类型表示用户加入或离开一个房间。
m.room。join_rules:此事件类型定义了加入房间的规则。
topic:此事件类型设置一个房间的主题。

除了核心的Matrix协议之外,还有许多提供附加功能的扩展。这些扩展包括:

makefile 复制代码
端到端加密(E2EE):此扩展提供了一种加密消息的机制,以便只有发送方和接收方可以读取它们。
VoIP:此扩展提供了一种进行语音呼叫的机制。
视频聊天:这个扩展提供了一个机制,使视频通话。
推送通知:这个扩展提供了一种机制,当在房间中发送新消息时接收推送通知。

矩阵协议是一种功能强大的通用通信协议,可用于各种目的。对于需要安全可靠的通信方式的个人和组织来说,它是一种流行的选择。

  • 实现案例

Matrix协议的服务和客户端实现有多个语言的版本,包括synapse,dendrite。

下面是一些如何使用矩阵的客户端例子:

makefile 复制代码
Element: Element是一个流行的Matrix客户端,可用于各种平台,包括桌面、移动和web。
Riot: Riot是另一个流行的Matrix客户端,可用于各种平台。
Synapse: Synapse是一个矩阵服务器,可用于托管您自己的矩阵主服务器。
Matrix.org: Matrix.org是一个支持Matrix协议开发的非营利组织。

如果您正在寻找一种安全、分散和可互操作的通信协议,那么Matrix是一个很好的选择。它是一种通用协议,可用于各种目的,并且正在被越来越多的个人和组织使用。

6 简单对比和如何选择 XMPP vs Matrix vs Slack

Matrix 是您可以考虑用于聊天应用程序的另一种聊天协议。它是通过 IP 进行可互操作、分散、实时通信的开放标准。作为 XMPP 的替代品,它越来越受欢迎。它最近被添加到 Ejabberd 中。

Matrix 可用于支持即时消息、物联网通信、VoIP/WebRTC 信令 - 任何需要标准 HTTP API 来发布和订阅数据同时跟踪对话历史记录的东西。

与 XMPP 相比,Matrix 将是比 Slack 等应用程序的更好选择------这些应用程序支持围绕有组织的群组或主题对话进行通信。

  • 选择方式

如果您想从客户端-服务器架构模式中受益或构建像 WhatsApp 这样的应用程序,请选择 XMPP,只要您不会过多关注二进制数据。

如果你打算创建一个像 Slack 这样的应用程序或一个将为群组通信提供动力的系统,你可以从 Matrix 的去中心化架构中受益,该架构可以同步房间内的对话历史记录,而不是消息传递。

如果您想快速实现您的应用程序,以便在具有挑战性的环境中支持机器对机器的通信,MQTT 将为您提供良好的服务协议。 它允许有效地传输数据,对于经历不同延迟级别的网络来说是一个不错的选择。

7 小结及 matrix现状

Matrix协议在被公开后受到了获得了褒扬和批评。有人指出,互联网历史上其他这类试图定义开放式即时通讯或多媒体信令协议的尝试都较难广泛推行:如XMPP和IRCv3协议,并强调此类协议无法广泛推行的原因既有可能是技术上的,也可能包含政治上的。

在Librem5手机立项后不久,Matrix团队便与Purism公司公布了合作开发Librem 5的计划。Purism原计划使用Matrix协议来编写他们预装在Librem 5上的电话应用及信息应用。

参考: matrix-org.github.io/dendrite/

相关推荐
橙子家44 分钟前
Serilog 日志库简单实践(二):控制台与调试 Sinks(.net8)
后端
想不明白的过度思考者1 小时前
Rust——异步递归深度指南:从问题到解决方案
开发语言·后端·rust
ConardLi2 小时前
Easy Dataset 已经突破 11.5K Star,这次又带来多项功能更新!
前端·javascript·后端
报错小能手2 小时前
计算机网络自顶向下方法25——运输层 TCP流量控制 连接管理 “四次挥手”的优化
服务器·网络·计算机网络
芒克芒克2 小时前
ssm框架之Spring(上)
java·后端·spring
冒泡的肥皂2 小时前
MVCC初学demo(二
数据库·后端·mysql
追逐时光者2 小时前
一款基于 .NET WinForm 开源、轻量且功能强大的节点编辑器,采用纯 GDI+ 绘制无任何依赖库仅仅100+Kb
后端·.net
鬼火儿2 小时前
1.2 redis7.0.4安装与配置开机自启动
java·后端
郭源潮13 小时前
《Muduo网络库:实现TcpServer类终章》
服务器·网络·c++·网络库
逻极3 小时前
Rust数据类型(上):标量类型全解析
开发语言·后端·rust