5月28日、29日 今日の積み上げ
28日 爆睡してしまい、今日の積み上げを書けなかった。反省
## チャットアプリ自動更新機能実装
ページ全体を更新しなくても、送信したものが自分以外のチャットメンバーもリアルタイムで表示されるようになる。(LINEみたいな感じです。)
今まで実装した非同期通信は、自分自身は非同期で出来たが、他のユーザーには非同期で情報が行き渡っていない。
そのため、非同期で情報を保存している箱(JSON)を他のユーザーとも通信できるようにする。
そうすることで自動更新機能を実装することができる
・カスタムデータ属性
HTMLタグの属性の一種。カスタムデータ属性は自由に追加することができる。
使うときは、属性名を「data-○○○○○」と記述する
・WebAPI
・名前空間(namespace)
同様のクラス名で名付けたクラスを作ってもそれらを区別することができる。
「ディレクトリ名::クラス名」のように間に「::」と記述する
・namespaceを利用したコントローラのルーティング設定
「namespace :ディレクトリ名 do ~ end」と記述する
・$('.message:last')
この場合、messageというクラスがつけられた全てのノードのうち一番最後のノード、と言う意味になる。
最新のメッセージは一番下に表示されるので、ページの中で一番下(最後)のノードを取得する。これを利用し、一番最後のメッセージidを取得する
・setInterval()関数
第一引数に動かしたい関数名を、第二引数に動かす感覚をミリ秒単位渡すことが出来る
「setInterval(関数名, 数字)」と記述する
・match
JavaScriptの文字列が利用できるメソッド。引数に正規表現を取り、メソッドを利用した文字列にその正規表現とマッチする部分があれば、それを含む配列を返り値とする。
29日 悪戦苦闘しましたが、なんとかカリキュラの指示のJavaScriptを実装することが出来、無事LGTMをもらうことが出来た。