BISON编码/解码socket.io的中间件?

有没有办法篡改socket.io发送/接收之前发送的数据? 我正在考虑像一个快递中间件。
所以我可以在调用普通的.emit()方法之后,在调用socket.on(…)之前对数据进行编码。

在expression我会想像它有点像这样的BISON解码所有传入的请求:

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

现在怎么可能用socket.io来完成请求被发送的方式也被自动编码?

我知道,socket.io支持中间件以类似的forms来expression,但这只是为了socket.io发送创buildwebsocket连接的实际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(); }); 

但说实话,我很难find关于packet.data是如何编码的文档,所以我不能提供一个完整的例子。

编辑socket.io-parserdecodeString()这是用来parsing有效载荷。 不幸的是,它不会被导出(并且导出的方法都是asynchronous的,与事件处理程序不能很好地结合)。