README.md in wamp_client-0.1.4 vs README.md in wamp_client-0.2.0
- old
+ new
@@ -4,14 +4,25 @@
[![Circle CI](https://circleci.com/gh/ericchapman/ruby_wamp_client/tree/master.svg?&style=shield&circle-token=92813c17f9c9510c4c644e41683e7ba2572e0b2a)](https://circleci.com/gh/ericchapman/ruby_wamp_client/tree/master)
[![Codecov](https://img.shields.io/codecov/c/github/ericchapman/ruby_wamp_client/master.svg)](https://codecov.io/github/ericchapman/ruby_wamp_client)
Client for talking to a WAMP Router. This is defined [here](https://tools.ietf.org/html/draft-oberstet-hybi-tavendo-wamp-02)
-Please use [wamp_rails](https://github.com/ericchapman/ruby_wamp_rails) to integrate this GEM in to RAILS.
+Note: [wamp_rails](https://github.com/ericchapman/ruby_wamp_rails) has been deprecated in favor of
+[wamp-worker](https://github.com/ericchapman/ruby_wamp_worker) which allows this library to be run
+in a RAILS worker. It will also allow integration with Sidekiq to support allowing handlers to
+execute in the background.
## Revision History
+ - v0.2.0:
+ - Breaking changes to the API including
+ - Moving CallResult, CallError, CallDefer, and ProgressiveCallDefer to common module called "Response"
+ - Results to calls return a Hash object instead of a CallResult object
+ - Catches "StandardError" instead of "Exception"
+ - Session object has been split into *request* and *manager* objects
+ - Callback subscriptions are now all "on(event)"
+ - Lots of code cleanup and combining handling of methods
- v0.1.4:
- Wrapped defer logic inside of yield method for cleanliness
- v0.1.3:
- Improved logging
- Minor code cleanup
@@ -77,15 +88,11 @@
A connection can be created as follows
```ruby
require 'wamp/client'
-options = {
- uri: 'ws://127.0.0.1:8080/ws',
- realm: 'realm1',
-}
-connection = Wamp::Client::Connection.new(options)
+connection = Wamp::Client::Connection.new(uri: 'ws://127.0.0.1:8080/ws', realm: 'realm1')
connection.on(:join) do |session, details|
puts "Session Open"
# Register for something
@@ -95,11 +102,11 @@
session.register('com.example.procedure', method(:add)) do |registration, error, details|
# Call It
session.call('com.example.procedure', [3,4]) do |result, error, details|
if result
- puts result.args[0] # => 7
+ puts result[:args][0] # => 7
end
end
end
@@ -161,17 +168,12 @@
method 'add_tick_loop'
```ruby
require 'wamp/client'
-options = {
- uri: 'ws://127.0.0.1:8080/ws',
- realm: 'realm1',
-}
+connection = Wamp::Client::Connection.new(uri: 'ws://127.0.0.1:8080/ws', realm: 'realm1')
-connection = Wamp::Client::Connection.new(options)
-
connection.transport_class.add_tick_loop do
# Do something periodic
end
```
@@ -514,12 +516,12 @@
To call, do the following
```ruby
session.call('com.example.procedure', [15], {param: value}, {}) do |result, error, details|
# TODO: Do something
- args = result.args
- kwargs = result.kwargs
+ args = result[:args]
+ kwargs = result[:kwargs]
end
```
Options are
@@ -530,15 +532,15 @@
#### Errors
Errors can either be raised OR returned as shown below
```ruby
handler = lambda do |args, kwargs, details|
- raise 'error'
+ raise RuntimeError,'error'
# OR
- raise Wamp::Client::CallError.new('wamp.error', ['some error'], {details: true})
+ raise Wamp::Client::Response::CallError.new('wamp.error', ['some error'], {details: true})
# OR
- Wamp::Client::CallError.new('wamp.error', ['some error'], {details: true})
+ Wamp::Client::Response::CallError.new('wamp.error', ['some error'], {details: true})
end
session.register('com.example.procedure', handler)
```
All 3 of the above examples will return a WAMP Error
@@ -547,11 +549,11 @@
A deferred call refers to a call where the response needs to be asynchronously fetched before it can be returned to the
caller. This is shown below
```ruby
def add(args, kwargs, details)
- defer = Wamp::Client::Defer::CallDefer.new
+ defer = Wamp::Client::Response::CallDefer.new
EM.add_timer(2) { # Something Async
defer.succeed(args[0]+args[1])
}
defer
end
@@ -560,13 +562,13 @@
Errors are returned as follows
```ruby
def add(args, kwargs, details)
- defer = Wamp::Client::Defer::CallDefer.new
+ defer = Wamp::Client::Response::CallDefer.new
EM.add_timer(2) { # Something Async
- defer.fail(Wamp::Client::CallError.new('test.error'))
+ defer.fail(Wamp::Client::Response::CallError.new('test.error'))
}
defer
end
session.register('com.example.procedure', method(:add))
```
@@ -577,30 +579,30 @@
**Caller**
```ruby
results = []
session.call('com.example.procedure', [], {}, {receive_progress: true}) do |result, error, details|
- results = results + result.args
+ results = results + result[:args]
unless details[:progress]
puts results # => [1,2,3,4,5,6]
end
end
```
**Callee**
```ruby
def add(args, kwargs, details)
- defer = Wamp::Client::Defer::ProgressiveCallDefer.new
+ defer = Wamp::Client::Response::ProgressiveCallDefer.new
EM.add_timer(2) { # Something Async
- defer.progress(Wamp::Client::CallResult.new([1,2,3]))
+ defer.progress(Wamp::Client::Response::CallResult.new([1,2,3]))
}
EM.add_timer(4) { # Something Async
- defer.progress(Wamp::Client::CallResult.new([4,5,6]))
+ defer.progress(Wamp::Client::Response::CallResult.new([4,5,6]))
}
EM.add_timer(6) { # Something Async
- defer.succeed(Wamp::Client::CallResult.new)
+ defer.succeed(Wamp::Client::Response::CallResult.new)
}
defer
end
session.register('com.example.procedure', method(:add))
```
@@ -611,12 +613,12 @@
**Caller**
```ruby
call = session.call('com.example.procedure', [15], {param: value}, {}) do |result, error, details|
# TODO: Do something
- args = result.args
- kwargs = result.kwargs
+ args = result[:args]
+ kwargs = result[:kwargs]
end
# At some later time...
session.cancel(call, 'skip') # Options are 'skip', 'kill', or 'killnowait'
@@ -639,23 +641,23 @@
# To trigger a custom error, either return something or raise a "CallError"
# else the library will raise a standard error for you
end
def add(args, kwargs, details)
- defer = Wamp::Client::Defer::ProgressiveCallDefer.new
+ defer = Wamp::Client::Response::ProgressiveCallDefer.new
EM.add_timer(2) { # Something Async
if @interrupts[defer.request].nil?
- defer.progress(Wamp::Client::CallResult.new([1,2,3]))
+ defer.progress(Wamp::Client::Response::CallResult.new([1,2,3]))
end
}
EM.add_timer(4) { # Something Async
if @interrupts[defer.request].nil?
- defer.progress(Wamp::Client::CallResult.new([4,5,6]))
+ defer.progress(Wamp::Client::Response::CallResult.new([4,5,6]))
end
}
EM.add_timer(6) { # Something Async
if @interrupts[defer.request].nil?
- defer.succeed(Wamp::Client::CallResult.new)
+ defer.succeed(Wamp::Client::Response::CallResult.new)
end
@interrupts.delete(request)
}
defer
end