teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2019/11/14 12:10

投稿

asm
asm

スコア15149

answer CHANGED
@@ -3,4 +3,28 @@
3
3
  Railsでは、イベントがあるまで`sleep`するしかないように思います。
4
4
 
5
5
 
6
- もし実装する必要に駆られたならば、Railsとは別のロングポーリング対応のサーバーを開発・使用すると思います。
6
+ もし実装する必要に駆られたならば、Railsとは別のロングポーリング対応のサーバーを開発・使用すると思います。
7
+
8
+ ---
9
+
10
+ **追記**
11
+
12
+ 試してはいませんが、こんな感じですかね
13
+ (複数人同時に接続するとリソース食い過ぎで酷いことになると思います。)
14
+
15
+ ```ruby
16
+ def wait_message(cnt)
17
+ dm = Dm.where("id > ?", cnt)
18
+ i = 0
19
+ sleep(1) until dm.exists? || (i+=1) > 60
20
+ return dm
21
+ end
22
+
23
+ def ajax
24
+ dm = wait_message(params[:message][:cnt].to_i)
25
+ respond_to do |format|
26
+ format.js
27
+ format.json{ render json: dm }
28
+ end
29
+ end
30
+ ```