我设置了一个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在很多情况下都没有使用,因为它不是必需的,而且它仍然是"相对较新的"。