我在expressjs中使用socket.io 3.我想用express-validator清理传入的消息。我有这段代码:
var expressValidator = require('express-validator')
, sanitize = require('express-validator').sanitize;
socket.on('chat', function (data) {
io.sockets.in('test').emit('chat', {
user: sh.session.user,
message: data.message,
time: new Date()
});
});
我如何使用sanitize(data.message).xss
?因为这不起作用。
答案 0 :(得分:9)
在这种情况下,您希望使用validator
代替express-validator
。首先通过npm安装它:
npm install validator
然后以相同的方式使用它:
var sanitize = require('validator').sanitize;
// later on
message = sanitize(data.message).xss()
这样做的原因是因为express-validator
用于处理通过expressjs发出的HTTP请求。在Websockets的情况下,你不是通过expressjs,而只是听同一个端口。因此,express-validator实际上并不存在于Websocket数据事件的上下文中。