如何正确连接mqtt和Next.js?接收错误且连接不稳定

问题描述 投票:0回答:1

我正在使用 next.js 14 和应用程序路由器创建一个实时网络应用程序。 我正在添加一个 MQTT 连接,该连接在底层使用 Mosquito。 我正在使用 mqtt.js 库并像这样连接到代理:

const mqttClient: MqttClient = mqtt.connect("ws://my-broker-name:883", {
  reconnectPeriod: 1000,
  connectTimeout: 30 * 1000,
  keepalive: 60,
});

我在一个单独的文件中执行此操作,以便仅创建 mqttClient 的一个实例。 之后,我创建一个路由处理程序,在其中导入 mqtt 初始化模块并订阅 mqttClient 的主题。路由处理程序 (GET) 之后在我的根 page.tsx 页面中调用。

我收到的错误非常奇怪,我几乎找不到任何关于它的资源:

 ⨯ uncaughtException: TypeError: bufferUtil.mask is not a function
    at module.exports.mask (webpack-internal:///(rsc)/./node_modules/ws/lib/buffer-util.js:121:23)
    at Sender.frame (webpack-internal:///(rsc)/./node_modules/ws/lib/sender.js:138:7)
    at Sender.send (webpack-internal:///(rsc)/./node_modules/ws/lib/sender.js:359:16)
    at WebSocket.send (webpack-internal:///(rsc)/./node_modules/ws/lib/websocket.js:476:18)
    at duplex._write (webpack-internal:///(rsc)/./node_modules/ws/lib/stream.js:151:8)
    at doWrite (node:internal/streams/writable:590:12)
    at clearBuffer (node:internal/streams/writable:774:7)
    at onwrite (node:internal/streams/writable:644:7)
    at afterWrite (node:internal/streams/writable:701:5)
    at afterWriteTick (node:internal/streams/writable:687:10)
    at process.processTicksAndRejections (node:internal/process/task_queues:81:21)

我会感谢任何建议和帮助。 如果需要一些额外的信息,我会提供:)

我调试了代码,似乎时间上存在某种问题 - mqttClient 初始化得不够快,因此在处理路由函数中使用它时它是未定义的。

node.js next.js mqtt app-router mqtt.js
1个回答
0
投票

额外安装 bufferutil 库似乎有帮助。 该库是从 ws 库使用的,而 ws 库是从 mqtt.js 库使用的。

© www.soinside.com 2019 - 2024. All rights reserved.