WebSocket-EventMachine-Client is Ruby WebSocket client based on EventMachine.
gem install websocket-eventmachine-clientor in Gemfile
gem 'websocket-eventmachine-client'EM.run do
ws = WebSocket::EventMachine::Client.connect(:uri => 'ws://localhost:8080')
ws.onopen do
puts "Connected"
end
ws.onmessage do |msg, type|
puts "Received message: #{msg}"
end
ws.onclose do |code, reason|
puts "Disconnected with status code: #{code}"
end
EventMachine.next_tick do
ws.send "Hello Server!"
end
endYou can connect to a local UNIX domain socket instead of a remote TCP socket using connect_unix_domain:
EM.run do
ws = WebSocket::EventMachine::Client.connect_unix_domain('/var/run/wss.sock')
# . . .
endYou can optionally specify the :version, :headers, and :ssl options to the method.
Following options can be passed to WebSocket::EventMachine::Client initializer:
[String] :host- IP or host of server to connect[Integer] :port- Port of server to connect[String] :uri- Full URI for server(optional - use instead of host/port combination)[Integer] :version- Version of WebSocket to use. Default: 13[Hash] :headers- HTTP headers to use in the handshake. Example:{'Cookie' => 'COOKIENAME=Value'}[Boolean] :ssl- Force SSL/TLS regardless of URI scheme or port
Following methods are available for WebSocket::EventMachine::Client object:
Called after successfully connecting.
Example:
ws.onopen do
puts "Client connected"
endCalled after closing connection.
Parameters:
[Integer] code- status code[String] reason- optional reason for closure
Example:
ws.onclose do |code, reason|
puts "Client disconnected with status code: #{code} and reason: #{reason}"
endCalled when client receive message.
Parameters:
[String] message- content of message[Symbol] type- type is type of message(:text or :binary)
Example:
ws.onmessage do |msg, type|
puts "Received message: #{msg} or type: #{type}"
endCalled when client discovers error.
Parameters:
[String] error- error reason.
Example:
ws.onerror do |error|
puts "Error occured: #{error}"
endCalled when client receive ping request. Pong request is sent automatically.
Parameters:
[String] message- message for ping request.
Example:
ws.onping do |message|
puts "Ping received: #{message}"
endCalled when client receive pong response.
Parameters:
[String] message- message for pong response.
Example:
ws.onpong do |message|
puts "Pong received: #{message}"
endSends message to server.
Parameters:
[String] message- message that should be sent to server[Hash] params- params for message(optional)[Symbol] :type- type of message. Valid values are :text, :binary(default is :text)
Example:
ws.send "Hello Server!"
ws.send "binary data", :type => :binaryCloses connection and optionally send close frame to server.
Parameters:
[Integer] code- code of closing, according to WebSocket specification(optional)[String] data- data to send in closing frame(optional)
Example:
ws.closeSends ping request.
Parameters:
[String] data- data to send in ping request(optional)
Example:
ws.ping 'Hi'Sends pong request. Usually there should be no need to send this request, as pong responses are sent automatically by client.
Parameters:
[String] data- data to send in pong request(optional)
Example:
ws.pong 'Hello'The MIT License - Copyright (c) 2012 Bernard Potocki