本文共 2226 字,大约阅读时间需要 7 分钟。
NATS的连线协议是一个简单的、基于文本的发布/订阅风格的协议。客户端连接到gnatsd(NATS服务器),并与gnatsd进行通信,通信基于普通的TCP/IP套接字,并定义了很小的操作集,换行表示终止。
与传统的、使用了二进制消息格式的消息通信系统不同,使用了基于文本的NATS协议,使得客户端实现很简单,可以方便地选择多种编程语言或脚本语言来实现。下面的表格描述了NATS协议消息,要注意操作名是大小写不敏感的,因此SUB foo 1\r\n和sub foo 1\r\n是等价的。
——————————————————————————————————操作名 | 发送端 | 描述——————————————————————————————————INFO 服务器 初始化TCP/IP连接后发送给客户端CONNECT 客户端 发送给服务器指定连接信息PUB 客户端 发布消息到主题或Reply主题SUB 客户端 订阅主题(或主题通配符)UNSUB 客户端 取消订阅主题(或自动取消订阅)MSG 服务器 交付一条消息负载给订阅者PING 两端 保持连接有效的PING活跃消息PONG 两端 保持连接有效的PONG活跃消息+OK 服务器 确认详细(Verbose)模式下协议消息的合法-ERR 服务器 指示协议错误,会导致客户端断开连接——————————————————————————————————
下面砍使用Telnet连接demo.nats.io站点的例子:
telnet demo.nats.io 4222Trying 107.170.221.32...Connected to demo.nats.io.Escape character is '^]'.INFO {"server_id":"1ec445b504f4edfb4cf7927c707dd717","version":"0.6.6","go":"go1.4.2","host":"0.0.0.0","port":4222,"auth_required":false,"ssl_required":false,"max_payload":1048576}
语法CONNECT {[“option_name”:option_value],…}
有效的选项如下:描述:
CONNECT消息与INFO消息相似,一旦客户端与NATS服务器建立了TCP/IP套接字连接,且服务器接收到INFO消息,客户端还可以发送CONNECT消息到NATS服务器,以便提供关于当前连接的更详细的信息和安全信息。例子:下面是来自Golang客户端的一个例子:
CONNECT {"verbose":false,"pedantic":false,"ssl_required":false,"name":"","lang":"go","version":"1.1.0"}\r\n
大多数客户端都设置了Verbose模式为false(缺省设置),这意味着服务器在接收到消息后不会发送+OK消息给客户端。