gpt4 book ai didi

javascript - 用于 socket.io 的 BISON 编码/解码中间件?

转载 作者:行者123 更新时间:2023-11-30 00:05:25 27 4
gpt4 key购买 nike

有什么方法可以篡改 socket.io 在发送/接收之前发送的数据吗?我在考虑类似 express 中间件的东西。
这样我就可以在调用正常的 .emit() 方法之后和调用 socket.on(...) 之前对数据进行编码。

在 express 中,我会想象它看起来有点像 BISON 解码所有传入的请求:

app.use(function(req, res, next) {
req.body = BISON.decode(req.body);
next();
});

现在如何使用 socket.io 以发送请求也自动编码的方式来完成?

我知道 socket.io 支持以类似形式表达的中间件,但这仅适用于 socket.io 发送以创建 websocket 连接的实际 http 请求......

io.use(function(socket, next) {
//...
next();
});

所以我怀疑这对这里有什么帮助..

最佳答案

您可以通过监听 packet 事件来拦截(和更改)数据,类似地使用 flush 事件来拦截传出消息:

io.use(function(socket, next) {
socket.conn.on('packet', function(packet) {
...change `packet.data` here...
});
socket.conn.on('flush', function(packets) { // array of packets
...
});
next();
});

但老实说,我很难找到有关如何对 packet.data 进行编码的文档,因此我无法提供完整的示例。

编辑:socket.io-parserdecodeString()用于解析有效负载。遗憾的是,它没有导出( 导出的方法都是异步的,不能与事件处理程序很好地结合)。

关于javascript - 用于 socket.io 的 BISON 编码/解码中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38713988/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com