gpt4 book ai didi

php - 如何使用 XAJAX 和 PHP 编写实时聊天?

转载 作者:可可西里 更新时间:2023-11-01 12:45:49 25 4
gpt4 key购买 nike

如何使用 XAJAX 和 PHP 编写实时聊天?

换句话说,有没有办法从服务器向多个客户端发送 xajax 响应?还是每隔几秒在客户端检查一次新消息的唯一可能性?

最佳答案

没有。客户端必须反复“轮询”服务器。

我认为这里的关键是思考交互设计。诀窍是让用户误以为聊天是即时的,但实际上它每 1、2、3 或 10 秒更新一次。

想法:

1) 当用户发送消息时,直接在聊天中显示并触发投票。

2) 如果民意调查返回了来自其他用户的多条消息,请不要一次添加它们,实际上在 1-2 秒左右的时间内添加它们,间隔随机,使其看起来像'重新“立即”和独立地进来。 (如果同时收到一堆消息,用户很快就会意识到聊天是即时更新的,而不是连续更新的。)

3) 如果用户空闲了 x 时间。将轮询频率降低到每 10 秒左右一次。

4) 如果用户活跃,即发送大量消息,则更频繁地轮询。

5) 为您写入聊天最后更新时间的每个 channel 准备一个静态文件。例如文件 chat-teenfun-lastupdate.txt 的内容为 1224934239 或您喜欢的任何时间格式。静态提供此文件并让客户端轮询此文件以检查 channel 是否已更新,而不是调用执行动态检查的 chat-poll.php?ch=teenfun。静态文件的服务速度大约快 10-100 倍,具体取决于动态脚本所涉及的工作,当您有 250 多个用户投票时,您将需要它。

祝你好运,玩得开心!

/0

附言。 或者,您实际上可以让客户端对服务器执行 ajax 调用并让它们“挂起”。那是您接受他们的请求并假装开始发回数据,但随后您只是暂停。当发生某些事情时,您会使用适当的数据完成响应。为此,我相信您需要编写自己的 HTTP 服务器,但它会专门执行此操作,因为您不能在内存中挂起 250 个 php 进程。也许 Lighttpd 可以以这种方式与 LUA 缓存模块一起使用。我不知道。不过会很有趣。该死的,我得找个时间试试 :)

关于php - 如何使用 XAJAX 和 PHP 编写实时聊天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/965890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com