async-websocket 0.13.0 → 0.13.1
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 +4 -4
- data/examples/chat/README.md +3 -0
- data/examples/chat/client.rb +1 -1
- data/examples/chat/config.ru +1 -1
- data/examples/chat/multi-client.rb +1 -1
- data/lib/async/websocket/connect_request.rb +9 -6
- data/lib/async/websocket/version.rb +1 -1
- data/spec/async/websocket/server_examples.rb +6 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 237b59048febd538e6112ea06b520c154386d057bd3b58a22bb153d45cd3209f
|
4
|
+
data.tar.gz: '0966a1666e31463adb1c2975f7e72534c7a8003794825ab94c24c3d5d02223e7'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e25c38a3d25b98209d3999e803f031cb216dd1ccd47f1c2af92fd75cab7859d888ee9fd79873aab8d41d9d6e1ff4bd3bf64addcba74bad619613c948ec17e89
|
7
|
+
data.tar.gz: a7284a36f8525415327177da55e83d35001f329d50b4b1843e4cd0b4d2488b17da26559df0248e493bea86ac163e0f3434113a6b76e4d1c9a16978e3c4118a41
|
data/examples/chat/client.rb
CHANGED
@@ -6,7 +6,7 @@ require 'async/http/endpoint'
|
|
6
6
|
require_relative '../../lib/async/websocket/client'
|
7
7
|
|
8
8
|
USER = ARGV.pop || "anonymous"
|
9
|
-
URL = ARGV.pop || "
|
9
|
+
URL = ARGV.pop || "https://localhost:8080"
|
10
10
|
ENDPOINT = Async::HTTP::Endpoint.parse(URL)
|
11
11
|
|
12
12
|
Async do |task|
|
data/examples/chat/config.ru
CHANGED
@@ -18,7 +18,7 @@ class Command < Samovar::Command
|
|
18
18
|
options do
|
19
19
|
option "-c/--count <integer>", "The total number of connections to make.", default: 1000, type: Integer
|
20
20
|
option "--bind <address>", "The local address to bind to before making a connection."
|
21
|
-
option "--connect <string>", "The remote server to connect to.", default: "
|
21
|
+
option "--connect <string>", "The remote server to connect to.", default: "https://localhost:8080"
|
22
22
|
|
23
23
|
option "-s/--semaphore <integer>", "The number of simultaneous connections to perform."
|
24
24
|
end
|
@@ -24,6 +24,8 @@ require 'protocol/http/request'
|
|
24
24
|
require 'protocol/http/headers'
|
25
25
|
require 'protocol/websocket/headers'
|
26
26
|
|
27
|
+
require 'async/http/body/stream'
|
28
|
+
|
27
29
|
module Async
|
28
30
|
module WebSocket
|
29
31
|
# This is required for HTTP/1.x to upgrade the connection to the WebSocket protocol.
|
@@ -32,12 +34,15 @@ module Async
|
|
32
34
|
include ::Protocol::WebSocket::Headers
|
33
35
|
|
34
36
|
class Wrapper
|
35
|
-
def initialize(
|
36
|
-
@
|
37
|
+
def initialize(output, response)
|
38
|
+
@output = output
|
39
|
+
@body = output
|
37
40
|
@response = response
|
38
41
|
@stream = nil
|
39
42
|
end
|
40
43
|
|
44
|
+
attr_accessor :body
|
45
|
+
|
41
46
|
def stream?
|
42
47
|
@response.success?
|
43
48
|
end
|
@@ -54,14 +59,12 @@ module Async
|
|
54
59
|
true
|
55
60
|
end
|
56
61
|
|
57
|
-
attr_accessor :body
|
58
|
-
|
59
62
|
def protocol
|
60
63
|
@response.protocol
|
61
64
|
end
|
62
65
|
|
63
66
|
def stream
|
64
|
-
@stream ||= Async::HTTP::Body::Stream.new(@response.body, @
|
67
|
+
@stream ||= Async::HTTP::Body::Stream.new(@response.body, @output)
|
65
68
|
end
|
66
69
|
end
|
67
70
|
|
@@ -82,7 +85,7 @@ module Async
|
|
82
85
|
end
|
83
86
|
|
84
87
|
def call(connection)
|
85
|
-
Wrapper.new(
|
88
|
+
Wrapper.new(body, super)
|
86
89
|
end
|
87
90
|
end
|
88
91
|
end
|
@@ -29,7 +29,7 @@ RSpec.shared_context Async::WebSocket::Server do
|
|
29
29
|
include_context Async::RSpec::Reactor
|
30
30
|
|
31
31
|
let(:protocol) {described_class}
|
32
|
-
let(:endpoint) {Async::HTTP::Endpoint.parse('http://127.0.0.1:8008'
|
32
|
+
let(:endpoint) {Async::HTTP::Endpoint.parse('http://127.0.0.1:8008')}
|
33
33
|
|
34
34
|
let!(:client) {Async::WebSocket::Client.open(endpoint, protocol)}
|
35
35
|
|
@@ -49,6 +49,8 @@ RSpec.shared_context Async::WebSocket::Server do
|
|
49
49
|
let(:handler) {Async::WebSocket::Connection}
|
50
50
|
let(:headers) {Array.new}
|
51
51
|
|
52
|
+
let(:message) {["Hello World"]}
|
53
|
+
|
52
54
|
let(:server) do
|
53
55
|
Async::HTTP::Server.for(endpoint, protocol) do |request|
|
54
56
|
if Async::WebSocket::Request.websocket?(request)
|
@@ -57,6 +59,8 @@ RSpec.shared_context Async::WebSocket::Server do
|
|
57
59
|
|
58
60
|
connection = handler.call(framer)
|
59
61
|
|
62
|
+
connection.write(message)
|
63
|
+
|
60
64
|
connection.close
|
61
65
|
end
|
62
66
|
else
|
@@ -68,6 +72,7 @@ RSpec.shared_context Async::WebSocket::Server do
|
|
68
72
|
it "can establish connection" do
|
69
73
|
connection = client.connect("/server")
|
70
74
|
|
75
|
+
expect(connection.read).to be == message
|
71
76
|
expect(connection.read).to be_nil
|
72
77
|
expect(connection).to be_closed
|
73
78
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-websocket
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.1
|
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-
|
11
|
+
date: 2019-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async-io
|
@@ -151,6 +151,7 @@ files:
|
|
151
151
|
- README.md
|
152
152
|
- Rakefile
|
153
153
|
- async-websocket.gemspec
|
154
|
+
- examples/chat/README.md
|
154
155
|
- examples/chat/client.rb
|
155
156
|
- examples/chat/config.ru
|
156
157
|
- examples/chat/multi-client.rb
|
@@ -233,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
233
234
|
- !ruby/object:Gem::Version
|
234
235
|
version: '0'
|
235
236
|
requirements: []
|
236
|
-
rubygems_version: 3.0.
|
237
|
+
rubygems_version: 3.0.3
|
237
238
|
signing_key:
|
238
239
|
specification_version: 4
|
239
240
|
summary: An async websocket library on top of websocket-driver.
|