我正在查看必须在以下限制条件下工作的Javascript小部件:
这是小部件的实现方式:
似乎是一个相当粗略的实现。难道没有更简单的方法吗?
我想探索:
a)是否可以避免重复从小部件轮询服务器?可以设置保持连接吗?小部件可以订阅服务器事件吗?我查看了Server-sent events API,它允许服务器将浏览通知发送到浏览器。但这还不能与IE兼容。
b)是否可以避免完全设置后端?我想到了WebSockets,但我对细节感到朦胧,兼容性问题会使它们变得不受欢迎。
感谢。
答案 0 :(得分:4)
服务器消息和WebSocket都是你的两个答案。可悲的是,两者都无处不在,所以你不能使用任何一种香草实现,并期望获得全力支持。
有一些解决方案(不幸的是有几个付费),它们在两端提供WebSocket功能,可以回退到Flash或长轮询。
Pusher是一个立刻浮现在脑海中的图书馆。 无论后端是什么,Pusher都有几种实现方式,客户端将默认使用websockets,但如果可能,将恢复为Flash的数据传输格式。 他们还有一个REST API。
这一切都取决于你想要支持的人。 最后,我甚至不知道你想给IE6 / 7用户提供全面的实时体验,即使你可以...... ...因为最坏情况下的变通方法(即:常量轮询)也是性能最慢的,最慢的浏览器会被卡住使用。