浏览代码

Fix callback ref not kept when using WSLStringMessageHandler

Mathieu Carbou 8 月之前
父节点
当前提交
a0463ff821
共有 2 个文件被更改,包括 3 次插入5 次删除
  1. 2 5
      src/WebSerial.cpp
  2. 1 0
      src/WebSerial.h

+ 2 - 5
src/WebSerial.cpp

@@ -101,16 +101,13 @@ void WebSerialClass::onMessage(WSLMessageHandler recv) {
 }
 
 void WebSerialClass::onMessage(WSLStringMessageHandler callback) {
+  _recvString = callback;
   _recv = [&](uint8_t *data, size_t len) {
     if(data && len) {
-#ifdef ESP8266
       String msg;
       msg.reserve(len);
       msg.concat((char*)data, len);
-      callback(msg);
-#else
-      callback(String((char*)data, len));
-#endif
+      _recvString(msg);
     }
   };
 }

+ 1 - 0
src/WebSerial.h

@@ -119,6 +119,7 @@ class WebSerialClass : public Print {
     AsyncWebServer *_server;
     AsyncWebSocket *_ws;
     WSLMessageHandler _recv = nullptr;
+    WSLStringMessageHandler _recvString = nullptr;
     bool _authenticate = false;
     String _username;
     String _password;