Sha256: 0fe1140276eef1988e998279b365b773aa6ab803466e6f9cb48e35172535435e

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

=begin
= dangoサーバー
=end

class DangoServer < DangoServerFramework
  # サーバー起動時のインスタンス変数などを定義するメソッド
  # ここで定義されるインスタンス変数はサーバー全体で共有される
  def dango_server_init()
    shared[:sids] = []
  end
  
  # クライアント接続時に呼び出されるメソッド
  def dango_connect() 
    current_sids = []
    shared.transaction(:sids) do |sids|
      sids.push(session[:sid])
      current_sids = sids.deep_dup
      shared.commit(sids)
    end
    
    send_obj = {:sids => current_sids} # 全員に現在のsid一覧を送る
    send_notice(:notice_current_sids, current_sids, send_obj)
  end
  
  # クライアント接続解除時に呼び出されるメソッド
  def dango_close() 
    current_sids = []
    shared.transaction(:sids) do |sids|
      sids.delete(session[:sid])
      current_sids = sids.deep_dup
      shared.commit(sids)
    end
    
    send_obj = {:sids => current_sids} # 全員に現在のsid一覧を送る
    send_notice(:notice_current_sids, current_sids, send_obj)
  end
  
  # オブジェクトを特定sidに送信する
  def dango_receive_send_object(rec_obj)
    send_obj = rec_obj["object"]
    to_sids = rec_obj["sids"]
    current_sids = shared[:sids]
    if to_sids.is_a?(Array)
      if to_sids == []
        to_sids = current_sids
      else
        to_sids.delete_if {|sid| !current_sids.include?(sids) }
      end
      send_obj[:_from_sid] = session[:sid]
      send_notice(:notice_send_object, to_sids, send_obj)
    end
  end
end


Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dango_generator-0.5.1 templates/sample_as3mode/dango/server/99_dango_server.rb