您似乎对服务器负载有问题,所以我将比较相关技术.
Ajax投票:
这是最直接的.您每5秒钟进行一次setTimeout循环,以便检查新的聊天消息,或者设置一个iframe来重新加载.当您发布消息时,您还会返回新消息,并且事情不应该失灵.这种方法最大的缺点是您不太可能以与发布消息的频率相对应的频率进行轮询.要么你要轮询得太快,而且你会收到很多额外的请求,否则你会轮询得太慢,你一次会收到大量的消息,而不是以实时的方式让他们.这是迄今为止最简单的方法.
HTTP推送
这是服务器应该告诉客户端有新消息的想法,而不是客户端不断地打扰服务器询问是否还有新消息.想象一下,父母驾驶和孩子问“我们还在吗?”,你可以让父母告诉孩子,当他们到达那里.
有两种方法来假冒它,并为真实而做.您提到的WebSockets实际上是在客户端和服务器之间创建一个流并实时发送数据.这是非常棒的,对于具有浏览器的10个用户中的4个,可以做到这一点,他们会非常好奇.别人都会有破碎的页面.抱歉.也许在几年.
你也可以用长时间轮询的方法来伪造技术.这个想法是,您要求服务器是否有新消息,并且服务器在新消息出现或达到一些预设限制(30秒左右)之前不会应答.这使得将请求数量降至最低,同时使用已知的Web技术,因此大多数浏览器都可以使用它.你会有一个很高的连接并发性,但他们真的没有做任何事情,所以它应该有太高的服务器成本.
以前我已经使用了所有这些,但是最后还是长时间轮询自己.您可以在这里找到更多关于如何实际执行此操作:How do I implement basic “Long Polling”?