protocol-websocket 0.5.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e079958535576416ddb72c68df979c7d8df7ef808986208917a0511d1ae69a64
4
- data.tar.gz: 6d6bfa79a21f935a9ca4928e4fbcc9f0942f822e0efed9bfb53387b2b46fad8b
3
+ metadata.gz: c86a30474a3cc59d80067cff2ffd5ca70ad3e6a1790cb733ec3c3e50a470d8ee
4
+ data.tar.gz: 0dd99e817ecb007230fd72a5d6192377407c342335957fb7684e36e7e5ce0eee
5
5
  SHA512:
6
- metadata.gz: a6fcc1de1d57eec7d08dc692af7dbc75c8758d064f98a47f05f8cc7a084dfcf4333cebe2c3e8dbc9c64a562744eb466e816bf28df07e77fc9a3b855e16cf589e
7
- data.tar.gz: '095cd95f03d4cb7d3e564725d0ab638917b4ff644ad439316e89700e85f26068b888d425b483be30110c86fca95554c44a5a7f5bd18e84aeac4bbbecd53ac619'
6
+ metadata.gz: af32770dae2bd359017808d16534872fa59aeb1de7323c1ceaba940d8b553ec59c23c73fe5fe83c352e8a08a4afca976ca06b0cc253d30c3ebf0d6ddf4ffde81
7
+ data.tar.gz: e4ff5515d2ff8312058161e08b5e42996282aa78d24f03a12dcf47de9541654c8d8de4b27b50cac65498bbd79de62f681c2f9894ff60b5925886db480c53973b
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
12
  Gemfile.lock
13
+ .covered.db
@@ -50,7 +50,7 @@ module Protocol
50
50
  end
51
51
 
52
52
  def close
53
- send_close
53
+ send_close unless closed?
54
54
 
55
55
  @framer.close
56
56
  end
@@ -121,7 +121,8 @@ module Protocol
121
121
  frame = CloseFrame.new(mask: @mask)
122
122
  frame.pack(code, message)
123
123
 
124
- write_frame(frame)
124
+ self.write_frame(frame)
125
+ self.flush
125
126
 
126
127
  @state = :closed
127
128
  end
@@ -19,13 +19,34 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  require 'digest/sha1'
22
+ require 'securerandom'
22
23
 
23
24
  module Protocol
24
25
  module WebSocket
25
- GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
26
-
27
- def self.accept_digest(key)
28
- Digest::SHA1.base64digest(key + GUID)
26
+ module Headers
27
+ # The protocol string used for the `upgrade:` header (HTTP/1) and `:protocol` pseudo-header (HTTP/2).
28
+ PROTOCOL = "websocket".freeze
29
+
30
+ # These general headers are used to negotiate the connection.
31
+ SEC_WEBSOCKET_PROTOCOL = 'sec-websocket-protocol'.freeze
32
+ SEC_WEBSOCKET_VERSION = 'sec-websocket-version'.freeze
33
+
34
+ SEC_WEBSOCKET_KEY = 'sec-websocket-key'.freeze
35
+ SEC_WEBSOCKET_ACCEPT = 'sec-websocket-accept'.freeze
36
+
37
+ module Nounce
38
+ GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
39
+
40
+ # Valid for the `SEC_WEBSOCKET_KEY` header.
41
+ def self.generate_key
42
+ SecureRandom.base64(16)
43
+ end
44
+
45
+ # Valid for the `SEC_WEBSOCKET_ACCEPT` header.
46
+ def self.accept_digest(key)
47
+ Digest::SHA1.base64digest(key + GUID)
48
+ end
49
+ end
29
50
  end
30
51
  end
31
52
  end
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Protocol
22
22
  module WebSocket
23
- VERSION = "0.5.0"
23
+ VERSION = "0.6.0"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protocol-websocket
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-12 00:00:00.000000000 Z
11
+ date: 2019-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: protocol-http
@@ -112,10 +112,10 @@ files:
112
112
  - lib/protocol/websocket/close_frame.rb
113
113
  - lib/protocol/websocket/connection.rb
114
114
  - lib/protocol/websocket/continuation_frame.rb
115
- - lib/protocol/websocket/digest.rb
116
115
  - lib/protocol/websocket/error.rb
117
116
  - lib/protocol/websocket/frame.rb
118
117
  - lib/protocol/websocket/framer.rb
118
+ - lib/protocol/websocket/headers.rb
119
119
  - lib/protocol/websocket/ping_frame.rb
120
120
  - lib/protocol/websocket/pong_frame.rb
121
121
  - lib/protocol/websocket/text_frame.rb
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  requirements: []
143
- rubygems_version: 3.0.3
143
+ rubygems_version: 3.0.2
144
144
  signing_key:
145
145
  specification_version: 4
146
146
  summary: A low level implementation of the WebSocket protocol.