使用socket.io进行服务器端验证
server-side validation with socket.io
我只想用nodejs&socket.io服务器端。
所以我用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和其他JavaScriptlib都有不错的表单验证插件,但您也可以自己创建:
$('.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
- 在Javascript中复制C#服务器端验证
- 表单的服务器端验证
- 用于显示服务器端验证结果的 Jqgrid 编辑事件
- 如何使用angular js在表单上显示服务器端验证错误消息
- Java服务器端验证
- 当需要服务器端验证时
- PHP 使用客户端和服务器端验证,而无需使用第三方代码
- 使用 JQuery 执行服务器端验证,然后将用户发送到另一个站点
- 主干:部分客户端验证 + 服务器端验证
- DropZone.js服务器端验证
- 服务器端验证,不关闭 JQuery(引导)对话框
- Asp.net.服务器端验证和客户端验证很好地协同工作的最佳方式是什么?
- Regex未在服务器端验证的代码隐藏中工作
- 使用socket.io进行服务器端验证
- 异步请求如何用于服务器端验证
- 我在PHP中的服务器端验证是在页面加载时进行的
- 客户端和服务器端验证
- angular服务器端验证,如何从对象引用中找到表单元素
- 在服务器端验证javascript代码
- 更改时删除服务器端验证格式更改