2016-07-11 11 views
1

私はこのように、サーバ上でアクションを実行するためにはJavaScript呼び出しを実行使用します。RailsのActioncable成功コールバック

subscription.perform('action', {...}); 

ただし、組み込みのJavaScriptの「成功」のコールバックがないように思える私が見てきたものから、つまり、サーバーの側で処理が完了した(または失敗した可能性がある)ことを知らせるためです。私はそうのようなアクションの最後にブロードキャストを送信について考えていました:

def action(data) 
    ...do_stuff 
    ActionCable.server.broadcast "room", success_message... 
end 

しかし、クライアントがこの「部屋」に加入して、すべての可能性が偽陽性で、その結果、そのメッセージを受け取ることになります。さらに、私が聞いたことから、メッセージの順序は保証されていないので、このアクション内の以前のブロードキャストは、成功メッセージの後に配信される可能性があります。

これに関するアイデア、または何か完全に欠けていますか?

答えて

2

https://github.com/xtian/action-cable-js/blob/master/dist/cable.jsおよびhttps://developer.mozilla.org/en-US/docs/Web/API/WebSocket#send()を見ると、performWebSocket.send()を実行してtrueまたはfalseを返し、データが到着したかどうかを知る方法がありません。

httpコール(jbuilderでapiを設定することをお勧めします)を使用してみるか、実際に成功メッセージをブロードキャストしてみることができます。これはWebSocketでは不可能です。

メッセージの順序を解決するには、サーバーでタイムスタンプを作成し、それをメッセージと一緒に送信し、メッセージをJavascriptでソートします。

幸運を祈る!

関連する問題