websocket-eventmachine-client 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +4 -0
- data/README.md +14 -5
- data/examples/autobahn_client.rb +1 -1
- data/lib/websocket/eventmachine/client.rb +23 -2
- data/lib/websocket/eventmachine/client/version.rb +1 -1
- metadata +10 -14
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bf7ffbade416b4c84219e2277f22ef31f0755778
|
4
|
+
data.tar.gz: 9178f2572d0b033c0d44f6f6925faf0ef07e89fa
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7dc1c07da7158d64d095702b6f742e0f610b4eae2712445ede2346bc2f7ed1314f2dfd81999183b9d929da71d284b0a28c2f681f551fd41c02a2854b1eb1f08b
|
7
|
+
data.tar.gz: eea80e6a5c18d4064a92886259eb5a8b0ec309087da9c753199825ed0dc03fd50b01e45f7d965b3f37ddf663d15450a34114980aa98bfedee6bcdf5baab87361
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -32,11 +32,13 @@ EM.run do
|
|
32
32
|
puts "Received message: #{msg}"
|
33
33
|
end
|
34
34
|
|
35
|
-
ws.onclose do
|
36
|
-
puts "Disconnected"
|
35
|
+
ws.onclose do |code, reason|
|
36
|
+
puts "Disconnected with status code: #{code}"
|
37
37
|
end
|
38
38
|
|
39
|
-
|
39
|
+
EventMachine.next_tick do
|
40
|
+
ws.send "Hello Server!"
|
41
|
+
end
|
40
42
|
|
41
43
|
end
|
42
44
|
```
|
@@ -49,6 +51,8 @@ Following options can be passed to WebSocket::EventMachine::Client initializer:
|
|
49
51
|
- `[Integer] :port` - Port of server to connect
|
50
52
|
- `[String] :uri` - Full URI for server(optional - use instead of host/port combination)
|
51
53
|
- `[Integer] :version` - Version of WebSocket to use. Default: 13
|
54
|
+
- `[Hash] :headers` - HTTP headers to use in the handshake. Example: `{'Cookie' => 'COOKIENAME=Value'}`
|
55
|
+
- `[Boolean] :ssl` - Force SSL/TLS regardless of URI scheme or port
|
52
56
|
|
53
57
|
## Methods
|
54
58
|
|
@@ -70,11 +74,16 @@ end
|
|
70
74
|
|
71
75
|
Called after closing connection.
|
72
76
|
|
77
|
+
Parameters:
|
78
|
+
|
79
|
+
- `[Integer] code` - status code
|
80
|
+
- `[String] reason` - optional reason for closure
|
81
|
+
|
73
82
|
Example:
|
74
83
|
|
75
84
|
```ruby
|
76
|
-
ws.onclose do
|
77
|
-
puts "Client disconnected"
|
85
|
+
ws.onclose do |code, reason|
|
86
|
+
puts "Client disconnected with status code: #{code} and reason: #{reason}"
|
78
87
|
end
|
79
88
|
```
|
80
89
|
|
data/examples/autobahn_client.rb
CHANGED
@@ -20,6 +20,8 @@ module WebSocket
|
|
20
20
|
# @option args [String] :host The host IP/DNS name
|
21
21
|
# @option args [Integer] :port The port to connect too(default = 80)
|
22
22
|
# @option args [Integer] :version Version of protocol to use(default = 13)
|
23
|
+
# @option args [Hash] :headers HTTP headers to use in the handshake
|
24
|
+
# @option args [Boolean] :ssl Force SSL/TLS connection
|
23
25
|
def self.connect(args = {})
|
24
26
|
host = nil
|
25
27
|
port = nil
|
@@ -27,10 +29,15 @@ module WebSocket
|
|
27
29
|
uri = URI.parse(args[:uri])
|
28
30
|
host = uri.host
|
29
31
|
port = uri.port
|
32
|
+
args[:ssl] = true if uri.scheme == 'wss'
|
30
33
|
end
|
31
34
|
host = args[:host] if args[:host]
|
32
35
|
port = args[:port] if args[:port]
|
33
|
-
|
36
|
+
if args[:ssl]
|
37
|
+
port ||= 443
|
38
|
+
else
|
39
|
+
port ||= 80
|
40
|
+
end
|
34
41
|
|
35
42
|
::EventMachine.connect host, port, self, args
|
36
43
|
end
|
@@ -40,6 +47,8 @@ module WebSocket
|
|
40
47
|
# @option args [String] :host The host IP/DNS name
|
41
48
|
# @option args [Integer] :port The port to connect too(default = 80)
|
42
49
|
# @option args [Integer] :version Version of protocol to use(default = 13)
|
50
|
+
# @option args [Hash] :headers HTTP headers to use in the handshake
|
51
|
+
# @option args [Boolean] :ssl Force SSL/TLS connection
|
43
52
|
def initialize(args)
|
44
53
|
@args = args
|
45
54
|
end
|
@@ -57,10 +66,22 @@ module WebSocket
|
|
57
66
|
end
|
58
67
|
|
59
68
|
# Called by EventMachine after connecting.
|
60
|
-
# Sends handshake to server
|
69
|
+
# Sends handshake to server or starts SSL/TLS
|
61
70
|
# Eventmachine internal
|
62
71
|
# @private
|
63
72
|
def connection_completed
|
73
|
+
if @args[:ssl]
|
74
|
+
start_tls
|
75
|
+
else
|
76
|
+
send(@handshake.to_s, :type => :plain)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Called by EventMachine after SSL/TLS handshake.
|
81
|
+
# Sends websocket handshake
|
82
|
+
# Eventmachine internal
|
83
|
+
# @private
|
84
|
+
def ssl_handshake_completed
|
64
85
|
send(@handshake.to_s, :type => :plain)
|
65
86
|
end
|
66
87
|
|
metadata
CHANGED
@@ -1,30 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: websocket-eventmachine-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Bernard Potocki
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-06-10 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: websocket-eventmachine-base
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.0'
|
30
27
|
description: WebSocket client for Ruby
|
@@ -34,7 +31,7 @@ executables: []
|
|
34
31
|
extensions: []
|
35
32
|
extra_rdoc_files: []
|
36
33
|
files:
|
37
|
-
- .gitignore
|
34
|
+
- ".gitignore"
|
38
35
|
- CHANGELOG.md
|
39
36
|
- Gemfile
|
40
37
|
- README.md
|
@@ -48,26 +45,25 @@ files:
|
|
48
45
|
- websocket-eventmachine-client.gemspec
|
49
46
|
homepage: http://github.com/imanel/websocket-eventmachine-client
|
50
47
|
licenses: []
|
48
|
+
metadata: {}
|
51
49
|
post_install_message:
|
52
50
|
rdoc_options: []
|
53
51
|
require_paths:
|
54
52
|
- lib
|
55
53
|
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
54
|
requirements:
|
58
|
-
- -
|
55
|
+
- - ">="
|
59
56
|
- !ruby/object:Gem::Version
|
60
57
|
version: '0'
|
61
58
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
59
|
requirements:
|
64
|
-
- -
|
60
|
+
- - ">="
|
65
61
|
- !ruby/object:Gem::Version
|
66
62
|
version: '0'
|
67
63
|
requirements: []
|
68
64
|
rubyforge_project:
|
69
|
-
rubygems_version:
|
65
|
+
rubygems_version: 2.2.2
|
70
66
|
signing_key:
|
71
|
-
specification_version:
|
67
|
+
specification_version: 4
|
72
68
|
summary: WebSocket client for Ruby
|
73
69
|
test_files: []
|