websocket-driver 0.6.5-java → 0.7.4-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +73 -44
- data/LICENSE.md +9 -19
- data/README.md +46 -26
- data/ext/websocket-driver/WebsocketMaskService.java +31 -29
- data/ext/websocket-driver/websocket_mask.c +23 -32
- data/lib/websocket/driver.rb +45 -14
- data/lib/websocket/driver/client.rb +8 -8
- data/lib/websocket/driver/draft75.rb +1 -1
- data/lib/websocket/driver/draft76.rb +12 -9
- data/lib/websocket/driver/headers.rb +1 -1
- data/lib/websocket/driver/hybi.rb +56 -44
- data/lib/websocket/driver/hybi/message.rb +1 -1
- data/lib/websocket/driver/proxy.rb +4 -4
- data/lib/websocket/driver/server.rb +3 -3
- data/lib/websocket/driver/stream_reader.rb +3 -3
- data/lib/websocket/http/request.rb +2 -2
- data/lib/websocket/http/response.rb +1 -1
- data/lib/websocket_mask.jar +0 -0
- metadata +29 -31
- data/examples/tcp_server.rb +0 -28
@@ -4,7 +4,7 @@ module WebSocket
|
|
4
4
|
class Proxy
|
5
5
|
include EventEmitter
|
6
6
|
|
7
|
-
PORTS = {'ws' => 80, 'wss' => 443}
|
7
|
+
PORTS = { 'ws' => 80, 'wss' => 443 }
|
8
8
|
|
9
9
|
attr_reader :status, :headers
|
10
10
|
|
@@ -20,7 +20,7 @@ module WebSocket
|
|
20
20
|
@state = 0
|
21
21
|
|
22
22
|
@headers = Headers.new
|
23
|
-
@headers['Host'] = @origin.host + (@origin.port ? ":#{@origin.port}" : '')
|
23
|
+
@headers['Host'] = @origin.host + (@origin.port ? ":#{ @origin.port }" : '')
|
24
24
|
@headers['Connection'] = 'keep-alive'
|
25
25
|
@headers['Proxy-Connection'] = 'keep-alive'
|
26
26
|
|
@@ -41,7 +41,7 @@ module WebSocket
|
|
41
41
|
@state = 1
|
42
42
|
|
43
43
|
port = @origin.port || PORTS[@origin.scheme]
|
44
|
-
start = "CONNECT #{@origin.host}:#{port} HTTP/1.1"
|
44
|
+
start = "CONNECT #{ @origin.host }:#{ port } HTTP/1.1"
|
45
45
|
headers = [start, @headers.to_s, '']
|
46
46
|
|
47
47
|
@socket.write(headers.join("\r\n"))
|
@@ -58,7 +58,7 @@ module WebSocket
|
|
58
58
|
if @status == 200
|
59
59
|
emit(:connect, ConnectEvent.new)
|
60
60
|
else
|
61
|
-
message = "Can't establish a connection to the server at #{@socket.url}"
|
61
|
+
message = "Can't establish a connection to the server at #{ @socket.url }"
|
62
62
|
emit(:error, ProtocolError.new(message))
|
63
63
|
end
|
64
64
|
end
|
@@ -2,7 +2,7 @@ module WebSocket
|
|
2
2
|
class Driver
|
3
3
|
|
4
4
|
class Server < Driver
|
5
|
-
EVENTS = %w[open message error close]
|
5
|
+
EVENTS = %w[open message error close ping pong]
|
6
6
|
|
7
7
|
def initialize(socket, options = {})
|
8
8
|
super
|
@@ -17,9 +17,9 @@ module WebSocket
|
|
17
17
|
def url
|
18
18
|
return nil unless e = env
|
19
19
|
|
20
|
-
url = "ws://#{e['HTTP_HOST']}"
|
20
|
+
url = "ws://#{ e['HTTP_HOST'] }"
|
21
21
|
url << e['PATH_INFO']
|
22
|
-
url << "?#{e['QUERY_STRING']}" unless e['QUERY_STRING'] == ''
|
22
|
+
url << "?#{ e['QUERY_STRING'] }" unless e['QUERY_STRING'] == ''
|
23
23
|
url
|
24
24
|
end
|
25
25
|
|
@@ -6,13 +6,13 @@ module WebSocket
|
|
6
6
|
MINIMUM_AUTOMATIC_PRUNE_OFFSET = 128
|
7
7
|
|
8
8
|
def initialize
|
9
|
-
@buffer = String.new('').force_encoding(BINARY)
|
9
|
+
@buffer = String.new('').force_encoding(Encoding::BINARY)
|
10
10
|
@offset = 0
|
11
11
|
end
|
12
12
|
|
13
13
|
def put(chunk)
|
14
14
|
return unless chunk and chunk.bytesize > 0
|
15
|
-
@buffer << chunk.force_encoding(BINARY)
|
15
|
+
@buffer << chunk.force_encoding(Encoding::BINARY)
|
16
16
|
end
|
17
17
|
|
18
18
|
# Read bytes from the data:
|
@@ -42,7 +42,7 @@ module WebSocket
|
|
42
42
|
buffer_size = @buffer.bytesize
|
43
43
|
|
44
44
|
if @offset > buffer_size
|
45
|
-
@buffer = String.new('').force_encoding(BINARY)
|
45
|
+
@buffer = String.new('').force_encoding(Encoding::BINARY)
|
46
46
|
else
|
47
47
|
@buffer = @buffer.byteslice(@offset, buffer_size - @offset)
|
48
48
|
end
|
@@ -30,11 +30,11 @@ module WebSocket
|
|
30
30
|
super
|
31
31
|
@headers.each do |name, value|
|
32
32
|
rack_name = name.upcase.gsub(/-/, '_')
|
33
|
-
rack_name = "HTTP_#{rack_name}" unless RESERVED_HEADERS.include?(name)
|
33
|
+
rack_name = "HTTP_#{ rack_name }" unless RESERVED_HEADERS.include?(name)
|
34
34
|
@env[rack_name] = value
|
35
35
|
end
|
36
36
|
if host = @env['HTTP_HOST']
|
37
|
-
uri = URI.parse("http://#{host}")
|
37
|
+
uri = URI.parse("http://#{ host }")
|
38
38
|
@env['SERVER_NAME'] = uri.host
|
39
39
|
@env['SERVER_PORT'] = uri.port.to_s
|
40
40
|
end
|
data/lib/websocket_mask.jar
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,85 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: websocket-driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.4
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- James Coglan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: websocket-extensions
|
15
|
-
version_requirements: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.1.0
|
20
14
|
requirement: !ruby/object:Gem::Requirement
|
21
15
|
requirements:
|
22
16
|
- - ">="
|
23
17
|
- !ruby/object:Gem::Version
|
24
18
|
version: 0.1.0
|
25
|
-
|
19
|
+
name: websocket-extensions
|
26
20
|
type: :runtime
|
27
|
-
|
28
|
-
name: eventmachine
|
21
|
+
prerelease: false
|
29
22
|
version_requirements: !ruby/object:Gem::Requirement
|
30
23
|
requirements:
|
31
24
|
- - ">="
|
32
25
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
26
|
+
version: 0.1.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
34
28
|
requirement: !ruby/object:Gem::Requirement
|
35
29
|
requirements:
|
36
30
|
- - ">="
|
37
31
|
- !ruby/object:Gem::Version
|
38
32
|
version: '0'
|
39
|
-
|
33
|
+
name: eventmachine
|
40
34
|
type: :development
|
41
|
-
|
42
|
-
name: permessage_deflate
|
35
|
+
prerelease: false
|
43
36
|
version_requirements: !ruby/object:Gem::Requirement
|
44
37
|
requirements:
|
45
38
|
- - ">="
|
46
39
|
- !ruby/object:Gem::Version
|
47
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
48
42
|
requirement: !ruby/object:Gem::Requirement
|
49
43
|
requirements:
|
50
44
|
- - ">="
|
51
45
|
- !ruby/object:Gem::Version
|
52
46
|
version: '0'
|
53
|
-
|
47
|
+
name: permessage_deflate
|
54
48
|
type: :development
|
55
|
-
|
56
|
-
name: rake-compiler
|
49
|
+
prerelease: false
|
57
50
|
version_requirements: !ruby/object:Gem::Requirement
|
58
51
|
requirements:
|
59
|
-
- - "
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
62
56
|
requirement: !ruby/object:Gem::Requirement
|
63
57
|
requirements:
|
64
|
-
- - "
|
58
|
+
- - ">="
|
65
59
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0
|
67
|
-
|
60
|
+
version: '0'
|
61
|
+
name: rake-compiler
|
68
62
|
type: :development
|
69
|
-
|
70
|
-
name: rspec
|
63
|
+
prerelease: false
|
71
64
|
version_requirements: !ruby/object:Gem::Requirement
|
72
65
|
requirements:
|
73
66
|
- - ">="
|
74
67
|
- !ruby/object:Gem::Version
|
75
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
76
70
|
requirement: !ruby/object:Gem::Requirement
|
77
71
|
requirements:
|
78
72
|
- - ">="
|
79
73
|
- !ruby/object:Gem::Version
|
80
74
|
version: '0'
|
81
|
-
|
75
|
+
name: rspec
|
82
76
|
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
83
|
description:
|
84
84
|
email: jcoglan@gmail.com
|
85
85
|
executables: []
|
@@ -90,7 +90,6 @@ files:
|
|
90
90
|
- CHANGELOG.md
|
91
91
|
- LICENSE.md
|
92
92
|
- README.md
|
93
|
-
- examples/tcp_server.rb
|
94
93
|
- ext/websocket-driver/WebsocketMaskService.java
|
95
94
|
- ext/websocket-driver/extconf.rb
|
96
95
|
- ext/websocket-driver/websocket_mask.c
|
@@ -113,9 +112,9 @@ files:
|
|
113
112
|
- lib/websocket/mask.rb
|
114
113
|
- lib/websocket/websocket_mask.rb
|
115
114
|
- lib/websocket_mask.jar
|
116
|
-
homepage:
|
115
|
+
homepage: https://github.com/faye/websocket-driver-ruby
|
117
116
|
licenses:
|
118
|
-
-
|
117
|
+
- Apache-2.0
|
119
118
|
metadata: {}
|
120
119
|
post_install_message:
|
121
120
|
rdoc_options:
|
@@ -136,8 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
135
|
- !ruby/object:Gem::Version
|
137
136
|
version: '0'
|
138
137
|
requirements: []
|
139
|
-
|
140
|
-
rubygems_version: 2.4.8
|
138
|
+
rubygems_version: 3.0.6
|
141
139
|
signing_key:
|
142
140
|
specification_version: 4
|
143
141
|
summary: WebSocket protocol handler with pluggable I/O
|
data/examples/tcp_server.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler/setup'
|
3
|
-
require 'eventmachine'
|
4
|
-
require 'websocket/driver'
|
5
|
-
require 'permessage_deflate'
|
6
|
-
|
7
|
-
module Connection
|
8
|
-
def initialize
|
9
|
-
@driver = WebSocket::Driver.server(self)
|
10
|
-
@driver.add_extension(PermessageDeflate)
|
11
|
-
|
12
|
-
@driver.on(:connect) { |e| @driver.start if WebSocket::Driver.websocket? @driver.env }
|
13
|
-
@driver.on(:message) { |e| @driver.frame(e.data) }
|
14
|
-
@driver.on(:close) { |e| close_connection_after_writing }
|
15
|
-
end
|
16
|
-
|
17
|
-
def receive_data(data)
|
18
|
-
@driver.parse(data)
|
19
|
-
end
|
20
|
-
|
21
|
-
def write(data)
|
22
|
-
send_data(data)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
EM.run {
|
27
|
-
EM.start_server('127.0.0.1', ARGV[0], Connection)
|
28
|
-
}
|