我们开始在客户端/浏览器和FE服务器之间开发一个推送解决方案——FE服务器是用java编写的。我现在正在学习这个领域,并了解到目前使用的4种主要技术如下所示:什么是长轮询、Websockets、服务器发送事件(SSE)和Comet?
我试图深入了解SSE和websockets技术,但我发现自己在谈到websockets时感到困惑。
在很多文章中,我可以发现有解释为什么web-sockets是我应该真正考虑的技术,如果我正在寻找一个实时的,双向通信,但在另一端,我看到有问题的websockets和代理服务器和安全。我发现关于它的最后一篇文章是从2010年开始的http://www.infoq.com/articles/Web-Sockets-Proxy-Servers
但是我想事情已经从2010年改变了有人能告诉我这些问题的最新解决方案吗?指出我应该注意的其他事情吗?
没什么。
一些遗留代理仍然不知道WebSockets连接。他们删除了Upgrade
报头(因为它在Connection
中表示),导致HTTP协商失败(或者只获得HTTP 200而不是HTTP 101)。其他代理尝试缓存响应并将其重用给其他客户端,这在WebSockets中没有意义(客户端会注意到响应具有错误的sec-websocket-accept
标头值时的问题)。
代理无处不在,由你的ISP或你的客户的ISP放置,你无法避免它们。
解决方案是始终使用wss://
。这样代理就不是问题了。