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-parser
有decodeString()
这是用来parsing有效载荷。 不幸的是,它不会被导出(并且导出的方法都是asynchronous的,与事件处理程序不能很好地结合)。