我正在开发一个具有聊天功能的网站,当用户收到新消息时需要立即通知。我正在尝试决定是使用Ratchet服务器还是使用AJAX实现长轮询系统。我目前已经实现了一个基本的Pub / Sub Ratchet服务器,当用户仍然在我网站上的“聊天”页面上时,它可以正常发送通知。我的问题是,只要用户移动到任何其他页面,连接就会关闭,我需要重新创建与服务器的连接。我知道有一些可能的解决方案,例如在始终显示的IFrame中存在websocket连接,但是如果我不需要,我不想沿着这条路走下去。使用AJAX实现长轮询是一种更好的方法吗?我担心如果我不断重新创建与Ratchet服务器的用户连接,只要他们更改网站内的页面,当网站使用频繁(一次成千上万的用户)时,它将增加太多的开销。有没有人在Ratchet服务器方面有这方面的经验?
感谢。
答案 0 :(得分:0)
作为免责声明,我在这方面知之甚少,但你不应该使用长轮询。你说你需要"即时通知,"这意味着使用AJAX你必须经常发出请求,而使用websockets你只需建立连接并等待数据。
我还没有做过任何类型的测试,但看起来每个浏览器选项卡建立和维护一个websocket连接似乎比不断提出AJAX请求的开销更少,更不用说你无法真正拥有"即时通知"使用AJAX,因为您必须以不可持续的速度提出请求才能实现这一目标。
因此,为用户拥有的每个浏览器选项卡打开websocket连接。如果他们打开新标签页或浏览到其他页面,只需再次打开连接即可。