ajax发送信息,如何向websocket用户发送AJAX消息

柔情只为你懂 2022-09-03 06:18 311阅读 0赞

我已经在Websockets中实现了实时聊天,它的工作就像一个魅力。 我将它与AJAX轮询(以前就存在)并排进行,因为我不想删除对旧浏览器的AJAX轮询支持,所以尽管Websockets将是首选,但我仍然将轮询作为一个选项。

我设置websocket代码的方法是:使用Websockets将消息发送到相应的连接

在数据库中记录邮件

AJAX发送的工作方式是:在数据库中记录邮件

AJAX轮询的工作方式是:检查用户上次检索房间邮件的时间,并检索此后的所有邮件

我有一个更多的概念性问题,关于如何让这两者相互合作。 假设我有用户A和用户B.如果用户A和用户B要么都使用AJAX轮询,要么都使用websockets,那么没有任何问题。 它的工作就像你所期望的那样。 但以用户A使用websockets而用户B使用AJAX轮询为例。

A B用户A通过WebSocket发送消息

聊天消息将发送到所有相关连接。 在本例中,它只回显给用户A,因为用户B没有使用WebSockets.

聊天消息登录到数据库

用户B请求新消息,用户A的消息被发回给他

B A用户B通过Ajax发送消息

邮件保存在数据库中

这就是我挂在心上的原因。 WebSocket->; AJAX用户消息之所以能够工作,是因为消息最终会在数据库中被AJAX用户轮询。 但是websocket用户根本不轮询数据库,因此来自AJAX用户的消息无法进入管道。 目前,websocket用户看不到来自AJAX用户的任何消息。 只有在重新加载整个页面时,它们才会看到这些消息,此时所有消息都将直接从数据库中检索出来。

允许AJAX用户的消息通过websocket发送到相关websocket用户的适当方法是什么? 基本上,我怎么能在另一个方向沟通呢?

关于这个问题,我唯一能找到的就是这张幻灯片—不过,我并没有使用长轮询,我也不完全确定“提供”给websocket应用程序是什么意思。 这是否意味着让websocket服务器负责检查新的AJAX消息? 没有办法从AJAX脚本“推送”到websocket服务器吗?

发表评论

表情:
评论列表 (有 0 条评论,311人围观)

还没有评论,来说两句吧...

相关阅读