[英]server-side validation with socket.io
我只想用nodejs和socket.io服务器端验证一些数据。
所以我用socket.emit('validate data', data)
发送数据socket.emit('validate data', data)
我的方法是通过像这样发送响应服务器端来做到这一点......
socket.emit('validated data', boolean })
..并在客户端回来得到这样的响应像这样......
socket.on('validated data', function (boolean) {
validationResponse = boolean;
});
对于一个布尔值来说,这似乎非常尴尬和无效。 我认为这是一个关于服务器 - 客户端与套接字通信的非常普遍的问题,因此解释将非常有用。
是否有更好的解决方案来获得布尔值或微小信息的直接响应?
如何使用正则表达式来验证字段输入? 您可以将这些正则表达式存储在每个元素的属性中,并通过输入的类来应用它们。 触发对change
或blur
等事件的验证检查,你很高兴...
<input type="text" regex="(a|b)" />
<input type="text" class="regex typeA" />
jQuery和其他JavaScript库有很好的表单验证插件,但你也可以自己创建它:
$('.regex').each(function(el) {
if ($(el).hasClass('typeA')) {
// doValidation
}
});
如果必须使用服务器检查用户输入,则无法使用WebSockets或AJAX请求进行验证。 WebSockets产生的数据流量当然少......
我的猜测是否定的,一般来说没有更好的(即更多的)解决方案。 我个人认为你的代码是很短。 如果您想要更短的代码,我唯一的建议是使用更短的标识符名称。
如果您的服务器代码只执行一种操作,则可以消除您的事件,只需使用socket.send(data)
和socket.on("message", fn)
而不是socket.emit
。
我的问题是更短或更安全的代码,但我怀疑如何:
我认为这是一个关于服务器 - 客户端通信的非常普遍的问题
..想到我这边的沟通是错误的。 问题是,如果您尝试使用此类进程保护应用程序,安全性并不是更好,因为您的客户端可能已经伪造了返回的布尔本身客户端。
所以最后我还是喜欢检查它,但是如果用户发送带有无效/用户名的消息,则该消息将不会发送给其他客户端,并且客户端本身会收到username already taken
消息。
伙计们,抱歉并感谢您的回答。 特别感谢@ThiefMaster
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.