博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NATS连线协议具体解释
阅读量:6180 次
发布时间:2019-06-21

本文共 2259 字,大约阅读时间需要 7 分钟。

NATS连线协议具体解释

作者:chszs,未经博主同意不得转载。经许可的转载需注明作者和博客主页:

NATS的连线协议是一个简单的、基于文本的公布/订阅风格的协议。

client连接到gnatsd(NATSserver)。并与gnatsd进行通信。通信基于普通的TCP/IP套接字,并定义了非常小的操作集,换行表示终止。

与传统的、使用了二进制消息格式的消息通信系统不同。使用了基于文本的NATS协议,使得client实现非常easy。能够方便地选择多种编程语言或脚本语言来实现。

9、NATS协议约定

  • 主题名(Subject Name)
    主题名包括响应主题(收件箱)名,是大写和小写敏感的,必须是非空字符串,不能包括空格,能够在字符串中使用“.”符号,比方:
    FOO、BAR、foo.bar、foo.BAR、FOO.BAR、FOO.BAR.BAZ 这些都是有效的主题名。

  • 通配符
    NATS支持在主题订阅中使用“*”通配符。
    星号“*”匹配主题的随意级别的随意字符。

    大于号“>”匹配后面的随意字符。

    比方foo.>匹配foo.bar和foo.bar.baz.1。但不匹配foo

    通配符必须被标识分隔。比方foo..baz和foo.>都是有效的。而foo.bar、f*o.b*r和foo>都是无效的。

  • 域分隔符
    NATS协议消息的域使用空格符或\t进行分隔。多个空格会被视为一个空格。

  • 新行
    与那些基于文本的协议一样,NATS使用CR+LF(也即\r\n。0X0D0A)作为协议消息的终止。

    新行还用于标记在PUB或MSG协议消息的实际有效负载。

10、NATS协议消息

以下的表格描写叙述了NATS协议消息,要注意操作名是大写和小写不敏感的,因此SUB foo 1\r\n和sub foo 1\r\n是等价的。

——————————————————————————————————操作名   |   发送端   |   描写叙述——————————————————————————————————INFO         server       初始化TCP/IP连接后发送给clientCONNECT      client       发送给server指定连接信息PUB          client       公布消息到主题或Reply主题SUB          client       订阅主题(或主题通配符)UNSUB        client       取消订阅主题(或自己主动取消订阅)MSG          server       交付一条消息负载给订阅者PING         两端         保持连接有效的PING活跃消息PONG         两端         保持连接有效的PONG活跃消息+OK          server       确认具体(Verbose)模式下协议消息的合法-ERR         server       指示协议错误。会导致client断开连接——————————————————————————————————

11、NATS协议消息的样例

以下砍使用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

语法CONNECT {[“option_name”:option_value],…}

有效的选项例如以下:

  • verbose打开+OK协议确认
  • pedantic:打开附带的严格格式检查。比方正确的主题名
  • ssl_required:指示client是否须要SSL连接
  • auth_token:client授权令牌
  • user:连接的username(假设设置了auth_required)
  • pass:连接的password(假设设置了auth_required)
  • name:client名(可选项)
  • lang:client的实现语言
  • version:client的版本号

描写叙述:

CONNECT消息与INFO消息类似,一旦client与NATSserver建立了TCP/IP套接字连接,且server接收到INFO消息,client还能够发送CONNECT消息到NATSserver,以便提供关于当前连接的更具体的信息和安全信息。

样例:以下是来自Golangclient的一个样例:

CONNECT {"verbose":false,"pedantic":false,"ssl_required":false,"name":"","lang":"go","version":"1.1.0"}\r\n

大多数client都设置了Verbose模式为false(缺省设置),这意味着server在接收到消息后不会发送+OK消息给client。

你可能感兴趣的文章
ECSHOP之transport.js/run() error:'process_request' 未定义
查看>>
dp学习笔记4
查看>>
SetTimer 与回调函数
查看>>
一步一步学Linq to sql(三):增删查改
查看>>
[ubuntu] ubuntu13.04切换桌面/工作区的方法
查看>>
连接各种数据库
查看>>
T-Sql(一)简单语法
查看>>
事务与并发
查看>>
类程序Log4j Android
查看>>
游戏运营杂谈<-最关心的游戏运营数据指标分析
查看>>
代码nullMerge two sorted linked lists
查看>>
异常选择struts2文件上传产生Source 'xxxx.tmp' does not exist
查看>>
Android用户界面开发(1):TextView
查看>>
vs2010 安装mvc3
查看>>
程序设置PAIP.在程序中设置壁纸墙纸
查看>>
关于TIME_WAIT可能引发的网络问题
查看>>
crontab 格式及例题详解
查看>>
SQL DELETE 语句
查看>>
windows7 安装程序无法创建新的系统分区或者无法识别
查看>>
代码生成器Kalman Studio2.2发布,完美支持Oracle,不需要安装Oracle客户端
查看>>