Class: DRb::WebSocket::ServerSide

Inherits:
Object
  • Object
show all
Defined in:
lib/drb/websocket/server.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ws, config, uri) ⇒ ServerSide

Returns a new instance of ServerSide.



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/drb/websocket/server.rb', line 82

def initialize(ws, config, uri)
  @uri = uri
  @config = config
  @msg = DRbMessage.new(@config)
  @ws = ws

  @messages = Messages.new
  @ws.on(:message) do |event|
    message = event.data
    sender_id = message.shift(36)
    EM.defer do
      res = @messages.recv_message(message.pack('C*'))
      if @ws
        @ws.send(sender_id + res.bytes)
      else
        puts 'Socket is already closed.'
      end
    end
  end
end

Instance Attribute Details

#uriObject (readonly)

Returns the value of attribute uri.



80
81
82
# File 'lib/drb/websocket/server.rb', line 80

def uri
  @uri
end

Instance Method Details

#alive?Boolean

Returns:

  • (Boolean)


110
111
112
# File 'lib/drb/websocket/server.rb', line 110

def alive?
  !!@ws
end

#closeObject



103
104
105
106
107
108
# File 'lib/drb/websocket/server.rb', line 103

def close
  EM.defer do
    @ws.close if @ws
    @ws = nil
  end
end

#recv_requestObject



114
115
116
117
118
119
120
121
122
# File 'lib/drb/websocket/server.rb', line 114

def recv_request
  begin
    @req_stream = StrStream.new(@messages.request_message)
    @msg.recv_request(@req_stream)
  rescue
    close
    raise $!
  end
end

#send_reply(succ, result) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
# File 'lib/drb/websocket/server.rb', line 124

def send_reply(succ, result)
  begin
    return unless alive?
    stream = StrStream.new
    @msg.send_reply(stream, succ, result)
    @messages.reply(stream.buf)
  rescue
    close
    raise $!
  end
end