Methods
- C
- N
- R
- S
- W
Attributes
| [R] | pings |
Class Public methods
new(port)
Link
# File actioncable/test/client_test.rb, line 76 def initialize(port) @ws = Faye::WebSocket::Client.new("ws://127.0.0.1:#{port}/") @messages = Queue.new @closed = Concurrent::Event.new @has_messages = Concurrent::Semaphore.new(0) @pings = 0 open = Concurrent::Event.new error = nil @ws.on(:error) do |event| if open.set? @messages << RuntimeError.new(event.message) else error = event.message open.set end end @ws.on(:open) do |event| open.set end @ws.on(:message) do |event| message = JSON.parse(event.data) if message['type'] == 'ping' @pings += 1 else @messages << message @has_messages.release end end @ws.on(:close) do |event| @closed.set end open.wait(WAIT_WHEN_EXPECTING_EVENT) raise error if error end
Instance Public methods
close()
Link
closed?()
Link
read_message()
Link
read_messages(expected_size = 0)
Link
# File actioncable/test/client_test.rb, line 126 def read_messages(expected_size = 0) list = [] loop do if @has_messages.try_acquire(1, list.size < expected_size ? WAIT_WHEN_EXPECTING_EVENT : WAIT_WHEN_NOT_EXPECTING_EVENT) msg = @messages.pop(true) raise msg if msg.is_a?(Exception) list << msg else break end end list end
send_message(message)
Link