小程序经常连不上 emqx,错误信息:AMQJS0007E Socket error:undefined

环境信息

  • EMQ X 版本:4.3.1
  • 操作系统及版本:centOS7

问题描述

小程序连接emqx,经常性会碰到连接不上,返回的错误信息是:AMQJS0007E Socket error:undefined;

查看emqx的日志文件 emqx.log,里面全部是下面这些信息:

2021-05-28T17:39:05.374191+08:00 [error] supervisor: 'esockd_connection_sup - <0.8558.0>', errorContext: connection_shutdown, reason: {ssl_error,{tls_alert,{record_overflow,"DTLS server: In state hello at dtls_record.erl:457 generated SERVER ALERT: Fatal - Record Overflow\n"}}}, offender: [{pid,<0.32293.23>},{name,connection},{mfargs,{coap_channel,start_link,[]}}]
2021-05-28T17:39:05.577015+08:00 [error] supervisor: 'esockd_connection_sup - <0.8558.0>', errorContext: connection_shutdown, reason: {ssl_error,{tls_alert,{record_overflow,"DTLS server: In state hello at dtls_record.erl:457 generated SERVER ALERT: Fatal - Record Overflow\n"}}}, offender: [{pid,<0.32298.23>},{name,connection},{mfargs,{coap_channel,start_link,[]}}]
2021-05-28T17:39:06.081696+08:00 [error] supervisor: 'esockd_connection_sup - <0.8558.0>', errorContext: connection_shutdown, reason: {ssl_error,{tls_alert,{record_overflow,"DTLS server: In state hello at dtls_record.erl:457 generated SERVER ALERT: Fatal - Record Overflow\n"}}}, offender: [{pid,<0.32305.23>},{name,connection},{mfargs,{coap_channel,start_link,[]}}]
2021-05-28T17:39:08.097429+08:00 [error] supervisor: 'esockd_connection_sup - <0.8558.0>', errorContext: connection_shutdown, reason: {ssl_error,{tls_alert,{record_overflow,"DTLS server: In state hello at dtls_record.erl:457 generated SERVER ALERT: Fatal - Record Overflow\n"}}}, offender: [{pid,<0.32327.23>},{name,connection},{mfargs,{coap_channel,start_link,[]}}]

请问这个是什么原因,如何解决?

CoAPs的DTLS工作不正常,解包失败,需要检查一下你的的证书、端口等配置项。

证书和端口我都是用的默认配置,你的描述可以具体点吗,比如具体需要检查哪些配置项,需要我贴配置信息我再贴,你们定位问题需要我这边传些什么信息方便你们调试也可以描述下。
期待能顺利解决问题,谢谢

方便描述一下你的业务需求吗?目前看起来像是你的UDP加密TLS功能工作不正常。你的小程序是需要CoAPs吗?

目前不知道你要使用CoAP还是LWM2M,DTLS配置分别位于 /emqx/etc/plugins/emqx_coap.conf/emqx/etc/plugins/emqx_lwm2m.conf ,需要配置一下你的服务端证书与小程序使用的证书一致。

1、我这边把emqx_coap和emqx_lwm2m插件关掉后,服务端没有任何报错提示,但是小程序端还是能经常出现连接不上并返回“AMQJS0007E Socket error:undefined”的错误信息;
2、我这边的应用场景是微信小程序连接上emqx,然后订阅对应的topic,然后往这个topic里面发送消息,其他端的小程序能收到消息,其中安全认证使用的webhook插件,在webhook中配置的回调地址(我们自己写的服务)会进行登录用户是否允许登录的校验,但是从日志信息看,webhook回调的服务根本没调用到。
大概情况是这样的,你看还需要些什么信息,如果可以QQ上沟通的话加个QQ沟通最好,我的QQ:66192284

接入的地址是 8083 WebSocket 协议

准备用 websocket 接入 coap 协议吗 :joy:

我这边的业务场景不用coap协议,主要是连上EMQX后订阅特定的主题,然后通过publish发送消息到指定主题下,对方收到后作出对应的业务处理。