通过Faye/websockets订阅更新会导致重复记录

 Asyywl 发布于 2023-02-07 14:36

更新

演示:http://jsbin.com/ogorab/311/edit


我正在尝试构建一个简单的聊天室,使用Faye/Websockets实时更新.消息是使用常规REST发布的,但也有通过Faye订阅/ messages/created,store.pushPayload用于推送新消息.

现在发生以下情况,我可以看到它出错的地方,但我不知道如何解决它:

    用户提交聊天消息

    ChatController处理提交,createRecord使用聊天消息调用,然后#save

    聊天消息会立即显示在聊天中(触发createRecord).请注意,id还没有分配.

    REST请求将发送到服务器

    服务器首先将消息发布给Faye

    服务器响应REST请求

    在解决ajax调用之前,消息已到达/ messages/created

    该消息再次插入视图中(当然应该与原始消息合并,但仍然没有为其分配一个id)

    解析了ajax调用,并分配了原始消息的id.

这会导致重复的消息,按以下顺序:

    [消息通过createRecord,将通过ajax响应解决]

    [通过pushPayload/ Faye 插入的消息]

我希望你能理解到目前为止.解决方案是让Faye在推送有效负载之前等待保存调用解析.不幸的是,我没有对正在保存的记录的引用(发生在控制器中,faye订阅已设置ApplicationRouter).

另外我希望这能以通用的方式工作:)

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有