使用 Socket.IO 的 emit() 而不是所有 HTTP 请求是一种好的做法吗?



我设置了一个Node.js HTTP服务器。它监听路径'/',并在get请求时返回一个空HTML模板。

该模板包含Require.js客户端脚本,用于创建Socket。与服务器的IO连接。

客户端和服务器之间的所有通信都由Web Sockets提供。

连接时,服务器需要认证;如果存在身份验证cookie,则客户端将它们发送给服务器进行验证,如果没有cookie,则客户端呈现登录视图并等待用户输入,等等。

到目前为止一切正常,在验证凭据之后,我为用户创建了一个SID,并用它来管理他的访问权限。然后我渲染主视图和应用程序启动。

问题:

  • 是否需要使用HTTPS而不是HTTP,因为我只使用HTTP将脚本发送到客户端?(注意:我计划使用本地存储而不是cookie)

  • 在使用纯Web Sockets没有HTTP的任何下降?

  • 如果它有效,为什么没有人使用它?

是否有必要使用HTTPS而不是HTTP,因为我只使用HTTP发送脚本到客户端?(注意:我打算使用Local存储而不是cookie)

不,websockets的握手需要HTTP/HTTPS。选择HTTP还是HTTPS是从安全的角度考虑的。如果您想使用它来简单地发送脚本,那么没有什么害处。如果你想在你的页面中实现用户登录/身份验证,那么应该使用HTTPS。

在使用纯Web Sockets没有HTTP的任何下降?

Web套接字和HTTP非常不同。如果你使用纯Web Sockets,你将错过HTTP。HTTP是跨平台web服务的首选。它对于文档遍历/检索很好,但它是单向的。Web套接字在单个TCP连接上提供全双工通信通道,并允许我们摆脱诸如Ajax、Reverse Ajax、Comet等变通方法和hack。需要注意的重要一点是,两者可以共存。因此,在不遗漏HTTP的情况下,以web套接字为目标。

如果有用,为什么没人用?

我们生活在HTTP时代,web套接字相对较新。从长远来看,web sockets将越来越受欢迎,并在web服务中占据更大的份额。直到最近,许多浏览器还不能正确地支持web套接字。看这里,ie10是IE中最新的也是唯一支持web套接字的版本。nginx,一个广受欢迎的服务器,直到2013年2 - 3月才支持web sockets。web sockets成为主流还需要时间,但它会的。

你的问题和这个很相似

当WebSockets可用时为什么要使用AJAX ?

在一天结束的时候,他们都是为不同的事情而创建的,尽管你可以使用web套接字来处理大多数事情,如果不是在正常的HTTP请求中可以完成的一切。

我建议使用HTTPS,因为你似乎是通过websockets发送身份验证数据(这也将使用SSL,不是吗?),但这取决于你对"需要"的定义。

缺点-缺乏对旧浏览器的支持

this this在很多情况下都没有使用,因为它不是必需的,而且它仍然是"相对较新的"。

相关内容

  • 没有找到相关文章

最新更新