Javascript 套接字或Ajax。我应该用什么? 我想要什么

Javascript 套接字或Ajax。我应该用什么? 我想要什么,javascript,jquery,node.js,socket.io,Javascript,Jquery,Node.js,Socket.io,我想使用Nodejs创建一个登录脚本。目前,我正在考虑使用套接字或ajax帖子 我所拥有的 我已经安装了Nodejs,并使用了 我试过的 我从一篇简单的Ajax文章开始。我为此使用jQuery并序列化了表单。这是可行的,但有时会有一些延迟或速度缓慢 因此,我认为套接字可能是与服务器通信并返回到客户端的更好方式 { "Status" : true, Data: { /* data here */ } } 现在我面临的问题是我不能再使用serialize()(该死的,我喜欢serialize()函

我想使用Nodejs创建一个登录脚本。目前,我正在考虑使用套接字或ajax帖子

我所拥有的 我已经安装了Nodejs,并使用了

我试过的 我从一篇简单的Ajax文章开始。我为此使用jQuery并序列化了表单。这是可行的,但有时会有一些延迟或速度缓慢

因此,我认为套接字可能是与服务器通信并返回到客户端的更好方式

{ "Status" : true, Data: { /* data here */ } }
现在我面临的问题是我不能再使用
serialize()
(该死的,我喜欢
serialize()
函数)

因此,现在我必须在我的客户端中使用json,获取两个输入值(电子邮件和密码),创建一个名为
obj
的对象,添加值并使用
socket.emit('login',json.stringify(obj,null,2))

在我的服务器中,我有

socket.on('login', function(data){
   data = JSON.parse(data)
   if(data.email === 'em@il.com' && data.password === 'secret')
        // return true
   // return false
})
现在的问题是,我无法让我的客户知道凭据是否正确

我可以通过使用另一个
emit
来实现这一点,但我认为这会导致过载

我不能只使用
返回true
或者
socket.send(true)

有人有同样的问题吗?或者我的问题的解决方案


谢谢

嗯,伙计,闻起来这不是你从客户那里调用的唯一函数。所以你应该开始设计你的API

如果您从客户机发送JSON,那么从服务器返回JSON是最光荣的事情。我会使用socket.send

基本的OK响应如下所示:

{ "Status" : true }
{ "Status" : false, "Message": "Login or password not valid" }
基本错误响应如下所示:

{ "Status" : true }
{ "Status" : false, "Message": "Login or password not valid" }
如果将来需要将数据返回到客户机,那么可能会使用相同的基本实体,您只需向其添加更多属性并在客户机中读取即可

{ "Status" : true, Data: { /* data here */ } }

我可以使用另一个emit来实现这一点,但我认为这会导致过载。
。为什么?这是使用socket.io通知客户端的方法。如果您想要通信的请求/响应模型,您应该使用ajax post。+1只需确保您只向特定用户发送emit。您可能需要一个带有提交按钮的普通表单作为非JS回退。调试后,您还可以从stringify调用中删除(,null,2)以缩短传递的字符串不需要非JS回退,我的应用程序需要javascript,感谢您提供关于stringify的提示;)这将是一个伟大的解决方案。但是,在执行
emit()
之后,如何捕获这些响应呢?或者你的意思是我应该使用socket从服务器发送到客户机?好吧,你应该在客户机上有类似socket的东西。在('logonComplete',function(data){…})服务器上,你发送一个'logonComplete'对象,其中包含你在客户机中需要的数据。啊,这就是sockets:)谢谢