nanomsg消息通信组件 v1.1.2
该组件主要用于服务端开发,不支持vista以下的操作系统
for(socket in nnmsg.eachIn({/*nnmsg.socket对象*/}) ){
for(socket,revents in nnmsg.eachInOut({/*nnmsg.socket对象*/}) ){
for(socket in nnmsg.eachOut({/*nnmsg.socket对象*/}) ){
返回最后一次错误的错误信息,错误代码
返回最后一次错误的错误代码
nnmsg.poll( {
{ fd = /*nnmsg.socket对象*/; events=1/*_NN_POLLIN*/}
} )
创建套接字
protocol必须指定,
domain为可选参数,默认为_AF_SP
关闭当前进程中的所有nanomsg套接字,解除所有阻塞执行的任务
nanomsg.dll 版本号,字符串
socket.recv();
socket.recv();
绑定
成功返回true,并设置端点ID到lastEndpointId
关闭socket
连接
成功返回true,并设置端点ID到lastEndpointId
创建路由设备在两个套接字间转发消息
此函数创建一个循环,直到返回错误代码
返回统计信息,该数据仅有参考意义
成功则返回math.size64对象
获取指定选项的值,
值如果是一个结构体,成功返回填充值的原结构体
值如果省略,则获取int类型的
级别参数可选,默认为_NN_SOL_SOCKET
最后一次成功bind或connect的端点ID
可用于shutdown函数的调用参数
当前套接字协议类型
接收符串消息
成功返回字符串
接收符串消息,消息未到达时不等待直接返回
接收符串消息
成功返回字符串
接收消息帧
参数一可以是缓冲区、指针、结构体
如果是指针、结构体则必须指定长度
成功返回参数@1,以及接收长度
接收消息帧,消息未到达时不等待直接返回
参数一可以是缓冲区、指针
如果是指针则必须指定长度
成功返回参数@1,以及接收长度
接收结构体
成功返回参数@1,以及接收长度
接收结构体,消息未到达时不等待直接返回
成功返回参数@1,以及接收长度
接收table对象
成功返回字符串
接收table对象,消息未到达时不等待直接返回
接收符串消息
成功返回字符串
发送字符串消息\参数一可以是字符串或缓冲区,
其他参数可选
发送符串消息,不等待直接返回\参数一可以是字符串或指针.
其他参数可选
发送消息帧\参数一可以是缓冲区、字符串、指针、结构体
如果是指针、结构体则必须指定长度
成功返回发送长度
发送消息帧,不等待直接返回\参数一可以是缓冲区、字符串、指针
如果是指针则必须指定长度
成功返回发送长度
发送结构体
成功返回发送长度
发送结构体,不等待直接返回
成功返回发送长度
发送table对象\参数一可以是字符串或缓冲区,
其他参数可选
发送table对象,不等待直接返回\参数一可以是字符串或指针.
其他参数可选
值可以是数值,字符串,缓冲区,或者一个结构体对象
成功返回true
级别参数可选,默认为_NN_SOL_SOCKET
关闭连接
参数可选设置端点ID,如果无参数则取lastEndpointId的值作为参数
用于sub套接字设置订阅的主题前缀
如果为空则订阅所有主题
用于sub套接字取消订阅的主题前缀
如果为空则订阅所有主题
创建消息总线(bus)套接字,
连接到消息总线的任何一个套接字发送消息,消息总线上的其他套接字都能收到,
这种模式只适合在局域网内使用
!nn_socket
创建pair套接字,
服务端和客户端可以1对1的收发消息
创建pub类型套接字 - 即用于发布消息的服务端,
nsub/pub套接字结合使用可实现消息广播模式(Topics & Broadcast)
服务端只管发布,不管客户端是否连接,也不管是不是丢消息
但客户端连接上来以后就不会丢消息
创建pull类型套接字 - 即用于拉消息的客户端,
push/pull套接字结合使用可实现消息队列的扇出模式,
这是一个1对多的模式,服务端不能有多个,但客户端可以多个,
服务端或客户端不管谁先启动,都会等待对方连接,中间绝不会丢弃消息,
服务端只发不收,客户端只收不发,一个消息不会重复发给多个客户端
一般用于任务分派、负载均衡
下面官网示意图是指传输方式为单向管道(Pipeline)
并不是指此模型只1对1的,请注意区分,
创建push类型套接字 - 即用于推送消息的服务端,
push/pull套接字结合使用可实现消息队列的扇出模式,
这是一个1对多的模式,服务端不能有多个,但客户端可以多个,
服务端或客户端不管谁先启动,都会等待对方连接,中间绝不会丢弃消息,
服务端只发不收,客户端只收不发,一个消息不会重复发给多个客户端
一般用于任务分派、负载均衡
下面官网示意图是指传输方式为单向管道(Pipeline)
并不是指此模型只1对1的,请注意区分,
创建原始消息总线(rawbus)套接字,
rawbus套接字不会发送消息给发送端
!nn_socket
创建rep类型套接字 - 即用于应答消息的服务端,
一个服务端对应多个客户端,
先由req客户端发出请求,rep服务端收到请求后进行应答
创建req类型套接字 - 即用于应答消息的客户端,
一个服务端对应多个客户端,
先由req客户端发出请求,rep服务端收到请求后进行应答
创建respondent套接字 - 即用于发出回应调查的客户端
surveyor/respondent套接字结合使用可实现调查模式
创建sub类型套接字 - 即用于订阅消息的客户端,
sub/pub套接字结合使用可实现消息广播模式(Topics & Broadcast)
服务端只管发布,不管客户端是否连接,也不管是不是丢消息
但客户端连接上来以后就不会丢消息
创建surveyort套接字 - 即用于发出问询消息的服务端
surveyor/respondent套接字结合使用可实现调查模式
_AF_SP=1
_AF_SP_RAW=2
_NN_BUS=0x70
_NN_DOMAIN=0xC
_NN_DONTWAIT=1
_NN_EACCES=0x9523DD9
_NN_EADDRINUSE=0x9523DCD
_NN_EADDRNOTAVAIL=0x9523DCE
_NN_EAFNOSUPPORT=0x9523DD2
_NN_EAGAIN=0x9523DD4
_NN_EBADF=0x9523DD5
_NN_ECONNABORTED=0x9523DE0
_NN_ECONNREFUSED=0x9523DCF
_NN_ECONNRESET=0x9523DE1
_NN_EFAULT=0x9523DD8
_NN_EFSM=0x9523DFE
_NN_EHOSTUNREACH=0x9523DDC
_NN_EINPROGRESS=0x9523DD0
_NN_EINVAL=0x9523DD6
_NN_EISCONN=0x9523DE3
_NN_EMFILE=0x9523DD7
_NN_EMSGSIZE=0x9523DDE
_NN_ENETDOWN=0x9523DCC
_NN_ENETRESET=0x9523DDA
_NN_ENETUNREACH=0x9523DDB
_NN_ENOBUFS=0x9523DCB
_NN_ENOPROTOOPT=0x9523DE2
_NN_ENOTCONN=0x9523DDD
_NN_ENOTSOCK=0x9523DD1
_NN_ENOTSUP=0x9523DC9
_NN_EPROTO=0x9523DD3
_NN_EPROTONOSUPPORT=0x9523DCA
_NN_ETERM=0x9523DFD
_NN_ETIMEDOUT=0x9523DDF
_NN_HAUSNUMERO=0x9523DC8
_NN_INPROC=-1
_NN_IPC=-2
_NN_IPV4ONLY=0xE
_NN_LINGER=1
_NN_MAXTTL=0x11
_NN_NS_DOMAIN=2
_NN_NS_ERROR=0xB
_NN_NS_EVENT=0xD
_NN_NS_FLAG=0xA
_NN_NS_LIMIT=0xC
_NN_NS_NAMESPACE=0
_NN_NS_OPTION_LEVEL=5
_NN_NS_OPTION_TYPE=8
_NN_NS_OPTION_UNIT=9
_NN_NS_PROTOCOL=4
_NN_NS_SOCKET_OPTION=6
_NN_NS_STATISTIC=0xE
_NN_NS_TRANSPORT=3
_NN_NS_TRANSPORT_OPTION=7
_NN_NS_VERSION=1
_NN_PAIR=0x10
_NN_POLLIN=1
_NN_POLLOUT=2
_NN_PROTOCOL=0xD
_NN_PROTO_PAIR=1
_NN_PROTO_PIPELINE=5
_NN_PUB=0x20
_NN_PULL=0x51
_NN_PUSH=0x50
_NN_RCVBUF=3
_NN_RCVFD=0xB
_NN_RCVMAXSIZE=0x10
_NN_RCVPRIO=9
_NN_RCVTIMEO=5
_NN_RECONNECT_IVL=6
_NN_RECONNECT_IVL_MAX=7
_NN_REP=0x31
_NN_REQ=0x30
_NN_REQ_RESEND_IVL=1
_NN_RESPONDENT=0x63
_NN_SNDBUF=2
_NN_SNDFD=0xA
_NN_SNDPRIO=8
_NN_SNDTIMEO=4
_NN_SOCKADDR_MAX=0x80
_NN_SOCKET_NAME=0xF
_NN_SOL_SOCKET=0
_NN_STAT_ACCEPTED_CONNECTIONS=0x66
_NN_STAT_ACCEPT_ERRORS=0x6B
_NN_STAT_BIND_ERRORS=0x6A
_NN_STAT_BROKEN_CONNECTIONS=0x68
_NN_STAT_BYTES_RECEIVED=0x130
_NN_STAT_BYTES_SENT=0x12F
_NN_STAT_CONNECT_ERRORS=0x69
_NN_STAT_CURRENT_CONNECTIONS=0xC9
_NN_STAT_CURRENT_EP_ERRORS=0xCB
_NN_STAT_CURRENT_SND_PRIORITY=0x191
_NN_STAT_DROPPED_CONNECTIONS=0x67
_NN_STAT_ESTABLISHED_CONNECTIONS=0x65
_NN_STAT_INPROGRESS_CONNECTIONS=0xCA
_NN_STAT_MESSAGES_RECEIVED=0x12E
_NN_STAT_MESSAGES_SENT=0x12D
_NN_SUB=0x21
_NN_SUB_SUBSCRIBE=1
_NN_SUB_UNSUBSCRIBE=2
_NN_SURVEYOR=0x62
_NN_SURVEYOR_DEADLINE=1
_NN_TCP=-3
_NN_TCP_NODELAY=1
_NN_TYPE_INT=1
_NN_TYPE_NONE=0
_NN_TYPE_STR=2
_NN_UNIT_BOOLEAN=4
_NN_UNIT_BYTES=1
_NN_UNIT_COUNTER=6
_NN_UNIT_MESSAGES=5
_NN_UNIT_MILLISECONDS=2
_NN_UNIT_NONE=0
_NN_UNIT_PRIORITY=3
_NN_VERSION_AGE=0
_NN_VERSION_CURRENT=5
_NN_VERSION_REVISION=0
_NN_WS=-4
_NN_WS_MSG_TYPE=1
_NN_WS_MSG_TYPE_BINARY=2
_NN_WS_MSG_TYPE_TEXT=1