更新
演示: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在推送有效负载之前等待保存调用解析.不幸的是,我没有对正在保存的记录的引用(发生在控制器中,在AppRout中设置了faye订阅).
另外我希望这能以通用的方式工作:)