Lingr APIで何か作る日記

Lingr APIを使って何か面白いものが作れないかと試行錯誤する日記です。
 | 

2007-02-12

セッションを使ってroom.enterでルームに入る (その3)  セッションを使ってroom.enterでルームに入る (その3) - Lingr APIで何か作る日記 を含むブックマーク はてなブックマーク -  セッションを使ってroom.enterでルームに入る (その3) - Lingr APIで何か作る日記  セッションを使ってroom.enterでルームに入る (その3) - Lingr APIで何か作る日記 のブックマークコメント

Railsモデル側がだいぶできたので、Webブラウザからroom.observeを呼び出してLingrチャットルームを見られるようにしましょう。

まず最初に、room.enterレスポンスのうち、counterとmax_observe_timeもDBに保存するように、Occupantモデルを修正します。

Index: app/models/occupant.rb
===================================================================
--- app/models/occupant.rb      (revision 72)
+++ app/models/occupant.rb      (working copy)
@@ -17,6 +17,8 @@
     end
     self.ticket = response[:response]['ticket']
     self.name = response[:response]['occupant_id']
+    self.counter = response[:response]["room"]["counter"].to_i
+    self.max_observe_time = response[:response]['max_observe_time'].to_i
     self.room.name = response[:response]['room']['name']
     self.room.save
   end

次に、Railsコントローラとビューを作ります。

$ script/generate Controller room show

Roomコントローラ (app/controllers/room_controller.rb) のshowアクションでは、セッションを生成して指定されたルームに入室します。

class RoomController < ApplicationController
  def show
    room = Room.find(params[:id])
    if @room
      @session = Session.create
      @occupant = Occupant.create(:session => @session, :room => room)
    end
  end
end

showアクションに対応するビュー (app/views/room/show.rhtml) では、room.enterで取得したsession, ticket, counterをテキストフィールドに埋め込んでいます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>JSONP Test</title>
    <script type="text/javascript" src="/javascripts/prototype.js"></script>
    <script type="text/javascript" src="/javascripts/prototype-jsonp.js"></script>
    <script type="text/javascript" src="/javascripts/lingr.js"></script>
  </head>
  <body>
    <input id="session" name="session" type="text" value="<%=h @session.name %>" />
    <input id="ticket" name="ticket" type="text" value="<%=h @occupant.ticket %>" />
    <input id="counter" name="counter" type="text" value="<%=h @occupant.counter %>" />
    <button onclick="observeLingr()">connect Lingr (observe)</button>
    <ul id="messages"></ul>
  </body>
</html>

これでRails側の準備はおしまいです。次はWebブラウザからJavaScriptを使って、チャットルームのメッセージを取得します。

 |