wsexternal

listener.ws.external

TypeDefault
string8083
说明

配置名称为 external 的 MQTT/WS 监听器的监听地址。

示例

8083:表监听 IPv4 的 0.0.0.0:8083127.0.0.1:8083:表监听地址为 127.0.0.1 网卡上的 8083 端口。 ::1:8083:表监听 IPv6 地址为 ::1 网卡上的 8083 端口。

listener.ws.external.mqtt_path

TypeDefault
string/mqtt
说明

WebSocket 的 MQTT 协议路径。因此 EMQ X 的 WebSocket 的地址是: ws://<ip>:<port>/mqtt

listener.ws.external.acceptors

TypeDefault
integer4
说明

监听器的接收池大小。

listener.ws.external.max_connections

TypeDefault
integer102400
说明

监听器允许的最大并发连接数量。

listener.ws.external.max_conn_rate

TypeDefault
integer1000
说明

监听器允许的最大接入速率。单位:个/秒

listener.ws.external.active_n

TypeDefault
integer100
说明

监听器持续接收 TCP 报文的次数。

listener.ws.external.rate_limit

TypeDefault
string100KB,10s
说明

监听器的速率限制。格式为 <limit>,<duration>

示例

100KB,10s:表 限制 10 秒内的流入字节数不超过 100 KB

listener.ws.external.zone

TypeDefault
stringexternal
说明

监听器所属的配置域 (Zone)。

listener.ws.external.access.1

TypeDefault
stringallow all
说明

监听器的 ACL 规则列表。它用于设置连接层的白/黑名单。

listener.ws.external.verify_protocol_header

TypeOptional ValueDefault
enumon, offon
说明

是否验证 WebSocket 携带的 HTTP 头部是否正确。微信小程序需关闭该验证

listener.ws.external.proxy_address_header

TypeOptional ValueDefault
stringX-Forwarded-For-
说明

如果 EMQ X 集群部署在 HAProxy 或 Nginx 后,则可打开该配置获取客户端真实的 IP 地址。

listener.ws.external.proxy_port_header

TypeOptional ValueDefault
stringX-Forwarded-Port-
说明

如果 EMQ X 集群部署在 HAProxy 或 Nginx 后,则可打开该配置获取客户端真实的端口。

listener.ws.external.proxy_protocol

TypeOptional ValueDefault
enumon, off-
说明

监听器是否开启 Proxy Protocol 的支持。

如果 EMQ X 集群部署在 HAProxy 或 Nginx 后,且需要拿到客户端真实的源 IP 地址与端口,则需打开此配置。

Proxy Protcol 参考: https://www.haproxy.com/blog/haproxy/proxy-protocolwsexternal - 图1 (opens new window)

listener.ws.external.proxy_protocol_timeout

TypeDefault
duration-
说明

设置 Proxy Protocol 解析的超时时间。如果该时间内没收到 Proxy Protocol 的报文,EMQ X 会关闭其连接。

listener.ws.external.backlog

TypeDefault
integer1024
说明

TCP 连接队列的最大长度。它表明了系统中允许的正在三次握手的 TCP 连接队列最大个数。

listener.ws.external.send_timeout

TypeDefault
duration15s
说明

TCP 报文发送超时时间。

listener.ws.external.send_timeout_close

TypeOptional ValueDefault
enumon, offon
说明

TCP 报文发送超时后,是否关闭该连接。

listener.ws.external.recbuf

TypeDefault
bytesize-
说明

TCP 接收缓存区大小(操作系统内核级参数)

listener.ws.external.sndbuf

TypeDefault
bytesize-
说明

TCP 发送缓存区大小(操作系统内核级参数)

listener.ws.external.buffer

TypeDefault
bytesize-
说明

TCP 缓冲区大小 (用户级)。

listener.ws.external.tune_buffer

TypeOptional ValueDefault
enumon, off-
说明

如果打开此配置,请设置该值等于 sndbuffrecbuff 的最大值。

listener.ws.external.nodelay

TypeOptional ValueDefault
enumtrue, falsetrue
说明

TCP_NODELAY 参数。开启该选项即允许小的 TCP 数据报文将会立即发送。

listener.ws.external.compress

TypeOptional ValueDefault
enumtrue, false-
说明

是否压缩 WebSocket 消息。压缩的实现依赖 zlibwsexternal - 图2 (opens new window)

defalte_opts 下的配置项,都属于压缩相关的参数配置,如无必要请不需要修改它。

listener.ws.external.deflate_opts.level

TypeOptional ValueDefault
enumnone, default, best_compression, best_speed-
说明

压缩等级。

listener.ws.external.deflate_opts.mem_level

TypeOptional ValueDefault
integer1 - 9-
说明

压缩参数。内存使用限制等级,配置可开辟多少内存来参与压缩过程。

1:最少的内存,但会降低压缩率。 9:最多的内存,会提高计算速度和压缩率。

不配置,则默认为 8

listener.ws.external.deflate_opts.strategy

TypeOptional ValueDefault
enumdefault, filtered, huffman_only, rle-
说明

压缩策略,用于调优压缩率:

  • default:针对普通数据。
  • filtered:由过滤器或预测器产生的数据,适用于分布随机性强的内容。
  • huffman_only:强制使用 Huffman 算法。优于 filtered
  • rle:将匹配距离限制为 1 (Run-Lenght Encoding),比 huffman_only 要快,但主要用于 PNG 图片。

这些策略仅影响压缩率,不会对正确性带来任何影响。

listener.ws.external.deflate_opts.server_context_takeover

TypeOptional ValueDefault
enumtakeover, no_takeover-
说明

是否允许服务端的压缩上下文在帧之间传递。

listener.ws.external.deflate_opts.client_context_takeover

TypeOptional ValueDefault
enumtakeover, no_takeover-
说明

是否允许客户端的压缩上下文在帧之间传递。

listener.ws.external.deflate_opts.server_max_window_bits

TypeOptional ValueDefault
integer8 - 15-
说明

服务端最大窗口值。设置一个较大的值会有更好的压缩率,但会额外的消耗内存。

listener.ws.external.deflate_opts.client_max_window_bits

TypeOptional ValueDefault
integer8 - 15-
说明

客户端最大窗口值。设置一个较大的值会有更好的压缩率,但会额外的消耗内存。

listener.ws.external.idle_timeout

TypeDefault
duration-
说明

TCP 连接建立后的发呆时间,如果这段时间内未收到任何报文,则会关闭该连接。

listener.ws.external.max_frame_size

TypeDefault
integer-
说明

允许的单个 MQTT 报文长度的最大值。